티스토리 뷰

IT/Coding Test

[Python] 백준 문제풀이 - 음계(2920번)

젊은 아날로그 2021. 10. 9. 01:48
728x90

[Python] 백준 문제풀이 - 음계(2920번)






서문



오늘은 백준 사이트 음계 ( 2920번 ) 문제풀이를 하겠습니다. 문제를 살펴보겠습니다. 😉







음계

출처: http://pythontutor.com/




1. 문제 설명



다장조는 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인지 판별하는 프로그램을 작성하시오.




2. 제한사항



없음




3. 입출력 예 설명



입력 출력
1 2 3 4 5 6 7 8 ascending
8 7 6 5 4 3 2 1 descending
8 1 7 2 6 3 5 4 mixed








본문



요약



  1. 입력으로 8개 숫자가 제공된다.
  2. 입력된 8개 숫자가 오름차순인지, 내림차순인지, 믹스인지 판별해라.




문제풀이



코드



# 나의 풀이
lst = list(map(int,input().split()))
sort_lst = sorted(lst)
reversed_lst = sorted(lst,reverse=True)

if lst == sort_lst:
    print("ascending")
elif lst == reversed_lst:
    print("descending")
else:
    print("mixed")

--- 

# 다른 분 풀이
lst = list(map(int,input().split()))
ascending = True
descending = True

for i in range(1,8):
    if lst[i] > lst[i-1]:
        decending = False
    elif lst[i] < lst[i-1]:
        ascending = False

if ascending:
    print("ascending")
elif descending:
    print("descending")
else:
    print("mixed")




Detail Code Review



주어진 8개의 숫자가 내림차순인지 오름차순인지 둘 다 아닌지를 판단할 때 어떤 방법이 있을까?

우선 8개만 나오기 때문에 속도를 고려하지 않아도 된다.



  1. 주어진 8개 숫자의 오름차순과 내림차순을 변수에 저장한 후 이를 조건문을 통해 판별한다.
  2. 반복문을 돌면서 주어진 8개 숫자가 오름차순인지 내림차순인지 판별한다.



1번 풀이의 코드는

  • 8개 입력을 리스트로 받는다.
    • 리스트를 sorted함수를 통해 오름차순 리스트를 만든다.
    • 리스트를 sorted함수를 통해 내림차순 리스트를 만든다.
  • 만들어진 두개의 리스트를 처음에 입력받은 리스트와 비교하여 정답을 반환한다.



2번 풀이 코드는

  • 8개 입력을 리스트로 받는다.
  • ascending과 descending을 판별하기 위해 flag 변수를 만들어 true 값을 넣는다.
  • for문을 돌면서
    • 만약 앞의 수가 뒤의 수보다 크면 ascending이기 때문에 descending 변수를 false로 지정한다.
    • 만약 앞의 수가 뒤의 수보다 작으면 descending이기 때문에 ascending 변수를 false로 지정한다.
  • for문을 다 돌고 나온 값을 조건문으로 비교하여 정답을 반환한다.
    • 만약 ascending이라면 ascending만 True 이기 때문에 if ascending:이 반환하고
    • 만약 descending이라면 descending만 True 이기 때문에 if descending: 이 반환하고
    • 둘 다 false라면 mixed를 반환한다.







혹시 문제가 있는 부분이 있으시면 말씀해주세요. 더 좋은 아이디어도 알려주시면 감사하겠습니다.😉


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함