본문 바로가기

코딩 테스트/백준

[백준 2920번 문제, 파이썬3] 음계

728x90
반응형

문제

문제

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

입력

첫째 줄에 8개 숫자가 주어진다. 이 숫자는 문제 설명에서 설명한 음이며, 1부터 8까지 숫자가 한 번씩 등장한다.

출력

첫째 줄에 ascending, descending, mixed 중 하나를 출력한다.


코드

line = list(map(int, input().split(' ')))

ascending_flag = False
descending_flag = False
for i in range(1, len(line)):
    if line[i-1]+1 == line[i]:
        ascending_flag = True
    elif line[i-1]-1 == line[i]:
        descending_flag = True
    else:
        ascending_flag = False
        descending_flag = False
        break

if ascending_flag:
    print('ascending')
elif descending_flag:
    print('descending')
else:
    print('mixed')

 

또는

 

line = list(map(int, input().split()))

if line == sorted(line):
    print('ascending')
elif line == sorted(line, reverse=True):
    print('descending')
else:
    print('mixed')

해결

+1 또는 -1 해서 맞으면 ascending, descending 으로 출력하는데 아니면 mixed 하고 for문 탈출 하는 방법과

오름차순, 내림차순 정렬을하고 그것과 같으면 해당 출력 아니면 mxied 하는 방법 두가지가 있다


참고

링크

 

 

 

728x90
반응형