For Programmer
SWEA 6190 파이썬 문제풀이(정곤이의 단조 증가하는 수) 본문
728x90
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWcPjEuKAFgDFAU4
이 문제도 간단한 구현 문제이다. 우선 3개 이상을 뽑을려면 반복문을 3번 돌리는 것보다 재귀로 구현하는 것이 나은데 여기서는 2개만 뽑기 때문에 이중반복문으로 구현할 수 있다.
우선 2개를 뽑은 후에 그 곱을 문자열로 바꾸어 각각의 자리수를 검사한다. 그 후 앞의 자리수가 뒤의 자리수보다 크다면 단조가 아닌 것으로 그것이 아니라면 단조로 하여 코드를 구현해준다.
import sys
sys.stdin = open('input.txt', 'r')
T = int(input())
for order in range(1, T + 1):
N = int(input())
array = list(map(int, input().split()))
result = -1 # Ai * Aj 의 최댓값을 출력할 변수 (없다면 그대로 -1 출력)
for i in range(N): # 2개를 뽑기 위해 우선 배열의 전체를 돈다.
for j in range(i + 1, N): # 위의 반복문에서 정해진 인덱스의 그 다음 인덱스부터 돈다.(중복해서 뽑지 않기 위해)
num = array[i] * array[j] # 뽑은 2개를 곱한다.
danjo = True # 단조의 여부를 우선 True 설정
for k in range(len(str(num)) - 1): # 곱해진 숫자를 문자열로 바꾼후 각 자리수를 검사한다.
if int(str(num)[k]) > int(str(num)[k + 1]): # 만약 각자리수 숫자 값이 다음 자릿수에 나오는 숫자보다 크다면
danjo = False # 단조가 아니므로 단조 여부를 False 후 탈출
break
if danjo: # 만약 단조라면
if result < num: # 그 곱의 값이 저장된 곱의 값보다 크다면
result = num # 그 값을 최댓값으로 설정
print(f'#{order} {result}')
728x90
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
SWEA 1215 파이썬 문제풀이(회문) (0) | 2022.02.10 |
---|---|
SWEA 1221 파이썬 문제풀이(GNS) (0) | 2022.02.10 |
SWEA 2805 파이썬 문제풀이(농작물 수확하기 ) (0) | 2022.02.10 |
SWEA 1979 파이썬 문제풀이(어디에 단어가 들어갈 수 있을까) (0) | 2022.02.09 |
SWEA 4466 파이썬 문제풀이(최대 성적표 만들기) (0) | 2022.02.08 |
Comments