티스토리 뷰
문제
다장조는 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 중 하나를 출력한다.
예제 입력 1
1 2 3 4 5 6 7 8
예제 출력 1
ascending
예제 입력 2 복사
8 7 6 5 4 3 2 1
예제 출력 2 복사
descending
예제 입력 3 복사
8 1 7 2 6 3 5 4
예제 출력 3 복사
mixed
출처: Contest > Croatian Open Competition in Informatics > COCI 2009/2010 > Contest #1 1번
해설
8개의 숫자를 1차원 배열로 입력받는다. 오름차순은 인접한 두 수의 차가 모두 1이며 내림차순은 인접한 두 수의 차가 모두 -1이라는 점엔 착안하여 인접한 두 수의 뺄셈 값을 통해 오름차순, 내림차순, 혼합순을 flag에 표시한다. 이때 주의해야 할 부분은 인접한 두 수의 차가 1, 또는 -1이 아닌 경우가 한 번이라도 나오면 바로 혼합순으로 결정하고 루프를 중단해야 한다는 점이다. 그렇지 않고 모두 비교하는 경우 6 7 8 1 2 3 4 5
와 같이 입력될 경우 flag가 2
가 되어 오름차순으로 출력이 되고 만다. 따라서 차의 값이 1 또는 -1이 아닌 경우에는 반드시 break;
을 사용하여 루프를 중단해야 정확한 결과가 나온다.
소스 코드 C
#include <stdio.h>
int main(int argc, char *argv[])
{
int number[8];
int i, result, flag = 0;
for (i = 0; i < 8; ++i) {
scanf("%d", &number[i]);
}
for (i = 0; i < 7; ++i) {
result = number[i] - number[i+1];
if ( result == 1){
flag = 1;
} else if ( result == -1) {
flag = 2;
} else {
flag = 3;
printf("mixed\n");
break;
}
}
if (flag == 1)
printf("descending\n");
else if (flag == 2)
printf("ascending\n");
return 0;
}
소스 코드 Python3
num = list(map(int, input().split()))
if num == sorted(num):
print("ascending")
elif num == sorted(num, reverse=True):
print("descending")
else:
print("mixed")
'Python > 심사문제' 카테고리의 다른 글
백준(BAEKJOON): 나머지(3052번) (0) | 2020.01.15 |
---|---|
백준(BAEKJOON): 숫자의 개수(2577번) (0) | 2020.01.08 |
백준(BAEKJOON): 최댓값(2562번) (0) | 2020.01.06 |
백준(BAEKJOON): 최소, 최대(10818번) (0) | 2020.01.03 |
백준(BAEKJOON): 더하기 사이클(1110번) (0) | 2019.12.20 |
- Total
- Today
- Yesterday
- setText()
- books
- PyQt5
- judge
- BOJ
- QtDesigner
- python3
- words
- baekjoon
- Tistory
- MacOS
- QComboBox
- tips
- C
- 리규찬
- 리찬규
- 소수
- 백준
- Python
- Mac
- QLineEdit
- QGridLayout
- django
- 유래
- locallibrary
- word
- QLabel
- 북한말
- NK
- 어원
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |