티스토리 뷰

Etc/Algorithm & Solving

[Python] 백준 2920

charming-l 2022. 1. 27. 00:28

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의 생성 방식은 다음의 두가지가 있다. 
    1. list1 = []
    2. 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