[백준] 2920 : 음계 (python/파이썬)

Dan·2023년 5월 29일
0

백준

목록 보기
1/6
post-thumbnail

분류

구현

문제 설명

다장조는 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 중 하나를 출력한다.

문제풀이

  • 총 8개의 원소를 순환하기 때문에 1~8까지의 숫자를 고정값으로 넣어도 된다.
  • 원소의 앞뒤만 비교해가며 값을 false로 바꿔주며 최종값을 if else문을 통해 결과값을 출력한다.

예를 들어서 배열이 [8 1 7 2 6 3 5 4] 이라고 가정해보자 0번쨰와 1번째 배열을 비교했을때는 0번째인 8이 1번째인 1보다 크기 때문에 ascending이 False가 될 것이다 하지만 그 다음 1번째와 2번째 배열을 비교하게 되면 1번째 1과 2번째 7을 비교 했을땐 7이 더 큰 값이기에 descending이 False가 되면서 둘다 ascending하고 descending 값이 둘다 False가 되면서 결과값을 mixed로 출력이 된다.

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

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


if ascending:
    print("ascending")
elif descending:
    print("descending")
else:
    print("mixed")
profile
만들고 싶은게 많은 개발자

0개의 댓글