문제
풀이
- 주어진 데이터가 오름차순 또는 내림차순으로 정렬되어있으면 ordered, 아니면 unordered를 출력해야하는 문제이다.
- list의 첫 번째 index가 max값이면 내림차순으로 가정해 reverse를 시킨 비교군 list와 비교하도록 구현하였다.
- 반대로 list의 첫 번째 index가 최솟값이면 오름차순으로 가정하며 sort asc를 시킨 비교군과 list를 비교하도록 구현하였다.
- 그 외의 상황이면 정렬이 안되있는 데이터이므로 unorded이다.
코드
import sys
input = sys.stdin.readline
def solve(l: list) -> str:
if l[0] == max(l):
compare_l = sorted(l, reverse=True)
elif l[0] == min(l):
compare_l = sorted(l)
else:
return 'Unordered'
return 'Ordered' if l == compare_l else 'Unordered'
if __name__ == '__main__':
n = int(input())
print('Gnomes:')
for _ in range(n):
datas = list(map(int, input().split()))
print(solve(datas))
결과
출처 & 깃허브
boj 4589
github