728x90
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWcPjEuKAFgDFAU4
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
< 📝 문제 >
정곤이는 자신이 엄청난 수학자임을 증명하기 위해, 어떤 규칙 만족하는 수를 찾아보기로 했다.
그 규칙은 단조 증가하는 수인데, 각 숫자의 자릿수가 단순하게 증가하는 수를 말한다.
어떤 k자리 수 X = d1d2…dk 가 d1 ≤ d2 ≤ … ≤ dk 를 만족하면 단조 증가하는 수이다.
예를 들어 111566, 233359는 단조 증가하는 수이고, 12343, 999888은 단조 증가하는 수가 아니다.
양의 정수 N 개 A1, …, AN이 주어진다.
1 ≤ i < j ≤ N 인 두 i, j에 대해, Ai x Aj값이 단조 증가하는 수인 것들을 구하고 그 중의 최댓값을 출력하는 프로그램을
작성하라.
< ❓ 생각 >
< 💻 코드 >
# 단조 증가하는가?
def check(v):
s = str(v)
for i in range(0,len(s)-1):
# 하나라도 단조 증가 하지 않으면 실패
if s[i] > s[i+1]:
return False
return True
# 테스트 케이스의 수
T = int(input())
for tc in range(1,T+1):
# 정수 개수
N = int(input())
# N개의 정수, A1,A2,....AN
A = list(map(int,input().split()))
# 내림차순으로 정리
A.sort(reverse=True)
# 가장 큰 값
max_value = -1
# Ai * Aj 구하기 ( 인데스는 0부터!!)
for i in range(N - 1):
for j in range(i + 1, N):
value = A[i] * A[j]
# 최댓값보다 작다면 할 필요 없음
if max_value > value:
break
# 단조 증가 하는가?
if check(value):
max_value = value
print(f'#{tc} {max_value}')
< ❗ >
가장 먼저 찾은 단조 증가가 최댓값, 최댓값을 찾으면 멈춰도 되는데 함수로 만들었더니 계속 fail이 나온다...
728x90
반응형
'TIL - 프로그래밍 > Python 알고리즘' 카테고리의 다른 글
[SWEA] 1240. 단순 2진 암호코드 - Python (0) | 2022.03.21 |
---|---|
[Python] 2819. 격자판의 숫자 이어 붙이기 - Python (0) | 2022.03.16 |
[SWEA] 2007. 패턴 마디의 길이 - Python (0) | 2022.03.11 |
[SWEA] 1926. 간단한 369게임 -Python (0) | 2022.03.10 |
[SWEA] 4880. 토너먼트 카드게임 - Python (0) | 2022.03.09 |
댓글