SW Expert 아카데미 // 6190
2021. 1. 18. 14:02ㆍProgramming/SW Expert Academy
SW Expert 아카데미 6190번 "정곤이의 단조 증가하는 수" 문제입니다.
def isDanJo(N):
if N < 10:
return 0
else:
k = str(N)
for i in range(0, len(k)-1):
if k[i] > k[i+1]:
return 0
return N
TC = int(input())
for tc in range(1, TC+1):
n = int(input())
lst = list(map(int, input().split()))
value = []
for i in range(0, len(lst)):
for j in range(0, len(lst)):
if i < j:
temp = isDanJo(lst[i]*lst[j])
if temp > 0:
value.append(temp)
if len(value) > 0:
value.sort(reverse = True)
print("#%d %d"%(tc, value[0]))
else:
print("#%d -1"%tc)
단조 증가하는 수란 자릿수가 뒤로 갈수록 숫자가 같거나 커지는 수를 의미한다.
예를 들어 111556은 1부터 시작하여 숫자가 같거나 커지면서 6으로 수가 끝나서 단조 증가하는 수다.
반대로 12343은 1부터 단조 증가하다가 4에서 3으로 숫자가 작아지므로 단조 증가하는 수가 아니다.
이를 구하는 방법은 수를 문자열로 바꾸어서 앞에서부터 두 개씩 비교하면서 앞의 수가 더 크면 그냥 단조 증가하는 수가 아님을 바로 판별하고 함수를 빠져나온다.
아무런 반응이 없을 경우에는 단조 증가하는 수이므로 정답후보 리스트에 넣는다.
단조 증가하는 수들 중에서 가장 큰 값을 출력하는 문제이므로 리스트의 길이가 1이상이면 내림차순 정렬을 해서 맨 앞의 값을 출력하고 리스트 길이가 0일 경우는 -1을 출력하면 된다.
'Programming > SW Expert Academy' 카테고리의 다른 글
SW Expert 아카데미 // 5948 (0) | 2021.01.19 |
---|---|
SW Expert 아카데미 // 5986 (0) | 2021.01.18 |
SW Expert 아카데미 // 6485 (0) | 2021.01.18 |
20210116 // 삼성 SW Expert 아카데미 // 6692 (0) | 2021.01.16 |
20210116 // 삼성 SW Expert 아카데미 // 10200 (0) | 2021.01.16 |