티스토리 뷰

PS 이야기/PS - BOJ

[BOJ] 2920번 - 음계

whatisyourname 2022. 4. 4. 11:56
반응형

https://www.acmicpc.net/problem/2920

 

2920번: 음계

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

www.acmicpc.net

문제

다장조는 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초 / 메모리 제한 : 128MB


1. 어떻게 풀까?

1-1) 크기 비교를 하여보자.

ascending일때의 특징은 모든 숫자가 오름차순이라는 것이고,

descending일때의 특징은 모든 숫자가 내림차순이라는 것이다.

만약, 둘다 아니라면 mixed라는 것이다.

따라서, 8개의 숫자 입력을 받은 다름 연속된 두 숫자끼리 비교하여 ascending이 아닌지, descending이 아닌지 판단하면

맞았습니다! 를 받을 수 있는 쉬운 문제이다. 

2) 최종 코드

 

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
31
#include <bits/stdc++.h>
using namespace std;
int arr[8];
 
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
 
    bool ascending = true;
    bool descending = true;
    for (int i = 0; i < 8; i++){
        cin >> arr[i];
    }
 
    for (int i = 0; i < 7; i++){
        if (arr[i] > arr[i+1]) {
            ascending = false;
        }
 
        if (arr[i] < arr[i+1]) {
            descending = false;
        }
    }
 
    if (ascending) { cout << "ascending";}
    else if (descending) { cout << "descending";}
    else {cout << "mixed";}
 
    return 0;
}
cs
반응형

'PS 이야기 > PS - BOJ' 카테고리의 다른 글

[BOJ] 8958번 - OX퀴즈  (0) 2022.04.04
[BOJ] 3052번 - 나머지  (0) 2022.04.04
[BOJ] 2908번 - 상수  (0) 2022.04.04
[BOJ] 2884번 - 알람 시계  (0) 2022.04.04
[BOJ] 2753번 - 윤년  (0) 2022.04.04
댓글
Total
Today
Yesterday
공지사항
최근에 올라온 글
최근에 달린 댓글
링크
«   2024/05   »
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 31
글 보관함