티스토리 뷰
C++에서 python으로 갈아타려니, 너무 낯설다. 백준 문제를 풀면서 다시 차근차근 기억해내보자...!
[백준 2920 문제]
다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다. 1부터 8까지 차례대로 연주한다면 ascending, 8부터 1까지 차례대로 연주한다면 descending, 둘 다 아니라면 mixed 이다. 연주한 순서가 주어졌을 때, 이것이 ascending인지, descending인지, 아니면 mixed인지 판별하는 프로그램을 작성하시오.
[내 코드]
result = ""
list = [int(x) for x in input().split()]
#앞의 두 원소들로 임시로 판별
if list[0]<list[1]:
result = "ascending"
else:
result = "descending"
#아래의 for문을 통해 mixed 판별
for i in range(1, len(list)-1):
if((result=="ascending") and (list[i] > list[i+1])):
result = "mixed"
break
elif((result=="descending") and (list[i] < list[i+1])):
result = "mixed"
break
print(result)
오랜만의 알고리즘 문제다 보니, 코드 길이도 길고, 수행시간도 길게 나왔다ㅜㅜ else if라고 써서 틀리고ㅜㅋㅋㅋ
수행시간이나 길이가 나보다 짧은 분들의 코드를 구경했는데,.. 아직 부족한게 많은 것 같다.
참고할 만한 사항들은
- list의 생성 방식은 다음의 두가지가 있다.
- list1 = []
- list2 = list()
- 여러 개의 입력 값을 int형으로 받기 위해 위 코드 대신 list2 = list(map(int, input().split()) 대체 가능
- map의 return 값은 map 객체이다.
- sorted를 이용하여 정렬된 배열을 정의하고, 이를 입력받은 배열과 비교하는 방식
- sorted 함수 때문에 시간이 보다 많이 걸릴 줄 알았는데 아니였다...
- sorted(iterable, key=key, reverse=reverse) 함수는 정렬된 새로운 iterable 객체를 반환, sort() 함수는 기존의 iterable 객체를 직접 변경한다는 차이점이 있다.
'Etc > Algorithm & Solving' 카테고리의 다른 글
[Algorithm] 이진 탐색 (Binary Search) (0) | 2022.02.26 |
---|---|
[Python] 백준 1181 (0) | 2022.02.04 |
[Python] 백준 10814 #빠른 입력 받기 (0) | 2022.01.30 |
[Python] 백준 10809 (0) | 2022.01.28 |
[Python] 백준 2908 (0) | 2022.01.27 |
Comments