본문 바로가기
백준

[백준] 2920번 : 음계 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 7. 17.
728x90
반응형

 

 

2920번: 음계

다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다. 1부터 8까지 차례대로 연주한다면 ascending, 8

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

  1. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
  2. 음을 연주할 순서대로 입력받아 리스트로 저장한다. play = list(map(int, sys.stdin.readline().split()))
  3. 시작 음을 저장할 변수를 생성하고 입력받은 값에서 시작 값을 저장한다. start = play[0]
  4. 만약 시작 음이 1이라면 ascending인지 판별한다. if (start == 1)
  5. 1부터 8까지 하나씩 for i in range(1, 9)
  6. 입력받은 음과 일치하는지 확인하고 만약 일치하지 않다면 if (i != play[i - 1])
  7. ascending이 아니라 mixed이므로 mixed를 출력하고 print('mixed')
  8. 판별을 종료한다. break
  9. 만약 마지막 음까지 일치하면 ascending이다. if (i == 8): print('ascending')
  10. 만약 시작 음이 8이라면 descending인지 판별한다. elif (start == 8)
  11. 8부터 1까지 하나씩 for i in range(8, 0, -1)
  12. 입력받은 음과 일치하는지 확인하고 만약 일치하지 않다면 if (i != play[8 - i])
  13. descending이 아니라 mixed이므로 mixed를 출력하고 print('mixed')
  14. 판별을 종료한다. break
  15. 만약 마지막 음까지 일치하면 descending이다. if (i == 1): print('descending')
  16. 반면에 시작 음이 1과 8 둘 중에 하나가 아니라면 판별이 필요 없이 mixed이다. else: print('mixed')
반응형

3. 소스코드

import sys

play = list(map(int, sys.stdin.readline().split()))

start = play[0]
if (start == 1):
    for i in range(1, 9):
        if (i != play[i - 1]):
            print('mixed')
            break
        if (i == 8):    
            print('ascending')
elif (start == 8):
    for i in range(8, 0, -1):
        if (i != play[8 - i]):
            print('mixed')
            break
        if (i == 1):
            print('descending')
else:
    print('mixed')
728x90
반응형