https://www.acmicpc.net/problem/23886
문제
주어진 수가 조건에 맞는 수인지 확인하는 문제이다.
조건은 연속으로 오르거나 내릴 때 각이 같아야 하고, 시작은 증가, 끝은 감소이다.
풀이
먼저 주어진 수를 리스트 컴프리헨션을 이용해 리스트로 바꿔준다. 그냥 문자열로 처리하거나 숫자로 입력받고, 자릿수로 분해해주어도 되겠지만, 이 방법이 가장 편할 듯 하다.
다른 조건을 검사하기 전에 시작과 끝의 각도를 확인하고, 시작이 감소이거나 끝이 증가이면 알프수가 아니므로 처리한다.
그 후 각각의 각을 확인하면서 조건에 맞는지 확인한다.
이전 각이 음수면서 지금 각도 음수인데 두 각이 다르면 알프수가 아니고, 이전 각이 양수면서 지금 각도 양수인데 두 각이 다르면 알프수가 아니다.
코드
num = [int(i) for i in input()]
ALPSOO = True
if (num[0] > num[1]) or (num[len(num)-2] < num[len(num)-1]):
print("NON ALPSOO")
exit(0)
for i in range(1, len(num)-1):
seta1 = num[i] - num[i-1]
seta2 = num[i+1] - num[i]
if seta1 == 0 or seta2 == 0:
ALPSOO = False
break
if seta1 > 0 and seta2 > 0 and seta1 != seta2:
ALPSOO = False
break
elif seta1 < 0 and seta2 < 0 and seta1 != seta2:
ALPSOO = False
break
if ALPSOO:
print("ALPSOO")
else:
print("NON ALPSOO")
'Online Judge > Baekjoon' 카테고리의 다른 글
[Baekjoon 11722] 가장 긴 감소하는 부분 수열 | Python (0) | 2024.11.12 |
---|---|
[Baekjoon 27907] The primes contain arbitrarily long arithmetic progressions | Python (0) | 2024.11.10 |
[Baekjoon 20436] ZOAC 3 | Python (0) | 2024.10.03 |
[Baekjoon 31418] 스펀지 | Python (0) | 2024.10.01 |
[Baekjoon 9414] 프로그래밍 대회 전용 부지 | Python (0) | 2024.09.19 |