# 문제
# 풀이
입력조건이 너무 깔끔하기 때문에 여러 경우의 수를 생각할 필요는 없었다. 또한 8개만 입력이 들어오기 때문에 시간복잡도에대한 생각을 하지 않아도 됐다.
오름차순 경우의 수와 내림차순 경우의 수는 8개의 음계를 정렬, 리버스정렬로 리스트를 재생성하고, 비교해주는 풀이방법을 사용했다.
# 다른 풀이 전략
그러나 입력이 이렇게 깔끔하지 않는 문제가 존재할 것이고 데이터가 많아진다면 상당히 비효율적인 방법이 될 것이다. 오름차순과 내림차순은 간단하게 앞-뒤 두개의 데이터쌍만을 비교하면 되기 때문에 반복문을 이용해서 두개의 데이터를 비교해 나가면 더욱 효과적일 것이다.
내림차순 Flag와 오름차순 Flag를 각각 만들고 조건에 맞지 않는다면 해당 Flag를 Flase로 바꿔준다. 이후 두개의 플래그가 모두 False이면 mixed가 될 것이다.
# 파이썬 정리
sorted() 함수와 sort()함수의 차이점은, 원본리스트를 바꿔주는 것인지 새로운 리스트를 생성하는지이다. sorted()는 원본은 유지하고 새로운 리스트를 반환시키고, sort()는 원본리스트를 정렬한다.
# 코드
"""
다른 풀이전략.
간단하게 sort후 비교해도 되지만, 원소가 많아지는 경우에는 불리
오름차순, 내림차순은 두개의 원소만 비교하면 알 수 있음
오름차순, 내림차순 두개의 플레그를 설정하고, 비교해가면서 각 플래그의 조건을 만족하지 못하면 False로설정
두개다 False일 경우는 mixed임
"""
import sys
ASCENDING = "ascending"
DECENDING = "descending"
MIXED = "mixed"
def solve(data):
sorted_data = sorted(data)
reversed_data = sorted(data,reverse=True)
if data == sorted_data:
return ASCENDING
elif data == reversed_data:
return DECENDING
else:
return MIXED
if __name__ == '__main__':
input = list(map(int,sys.stdin.readline().strip().split()))
answer = solve(input)
print(answer)
# 후기
'•알고리즘(Algorithm ) > 문제풀이' 카테고리의 다른 글
[백준-1874] 스택 수열 파이썬 (0) | 2022.08.05 |
---|---|
[백준-2798] 블랙잭 파이썬, 3중 반복문 사용 (0) | 2022.08.03 |
[백준-9663] N-Queen 파이썬, 백트랙킹, 파이썬 전역변수, enumerate (0) | 2022.08.03 |
[백준-11399] ATM 파이썬, 탐욕알고리즘을 이용한 최적해 찾기 (0) | 2022.07.28 |
[백준-1920] 수 찾기 파이썬, 파이썬 한줄 입력받기 및 정수형 리스트 변환, 리스트 슬라이스 시간복잡도 (0) | 2022.07.27 |