[C++] 백준 2920 음계
2021. 2. 8.
반응형

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

 

1. 서론

 

옛날에 풀었던 문젠데 그때는 C로 풀어서 C++로 다시 풀었다. 간단한데 이상하게 풀기 딱 좋은 문제... 조심!

 

2. 문제 풀이

 

다장조의 음계 순서대로 1~8인 경우엔 ascending, 8~1인 경우엔 descending, 숫자가 섞인 경우엔 mixed라고 출력하는 문제이다. 

처음에는 또 어렵게 생각해서 조건을 괴상하게 줬다가 간결하게 고쳤다.

말 그대로 반복문을 돌리면서 1~8인지 체크, 8~1인지를 변수 두 개로 체크한다.

그리고 각자 변수에 해당하면 문자열이 뜨도록 했다.

 

3. 코드 설명

 

#include <iostream>

using namespace std;

int main()
{
    int v[8];
    int i, a = 1, d = 1;

    for(i = 0; i < 8; i++)
        cin >> v[i];

    for (i = 0; i < 8; i++)
    {
        if (v[i] != i + 1)
            a = 0;
        if (v[i] != 8 - i)
            d = 0;
    }

    if (a == 1) cout << "ascending" << endl;
    else if (d == 1) cout << "descending" << endl;  
    else cout << "mixed" << endl;    
}

 

변수 a,d가 참인 상태로 처음에 시작한다.

배열을 입력받고 한 바퀴 돌리면서 1~8이 아닌 경우, 8~1이 아닌 경우 각자 변수를 0으로 바꿔준다. 

바뀐 값을 가지고 출력한다.

 

 

 

 

반응형
myoskin