다장조는 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인지 판별하는 프로그램을 작성하시오.
출처 : https://www.acmicpc.net/problem/2920
- 다음 숫자와 현재 숫자의 차이 구하기
mine
- string값으로 구분
- ascending
- 다음 숫자 - 현재 숫자 = 1
- descending
- 다음 숫자 - 현재 숫자 = -1
- mixed
- 1, 2번이 아닐 경우
ndb
- boolean값으로 구분
mine과 동일
mine
a = [int(x) for x in input().split()] result = "ascending" for i in range(len(a)-1): if a[i+1]-a[i] == 1: # 오름차순 result = "ascending" elif a[i+1]-a[i] == -1: # 내림차순 result = "descending" else: # 혼합 result = "mixed" break # 한 번이라도 혼합이면 루프 탈출 print(result)
출처 : https://github.com/Gitgorithm/wogus0333_Github/blob/main/BOJ/BOJ_2920.py
ndb
a = list(map(int, input().split(' '))) ascending = True descending = True for i in range(1, 8): if a[i] > a[i - 1]: descending = False elif a[i] < a[i - 1]: ascending = False if ascending: print('ascending') elif descending: print('descending') else: print('mixed')
mine = 68ms
ndb = 64ms