Information Security ˗ˋˏ ♡ ˎˊ˗

Programming/Programming 풀이

[Baekjoon] 2920번 음계(C++)

토오쓰 2021. 1. 28. 17:24

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

 

 

Level: Level 1

풀이: 미참고

Language: C++

프로그램: Visual Studio 2017

 

 

 

문제설명

다장조는 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까지 숫자가 한 번씩 등장한다.

입력 예

1 2 3 4 5 6 7 8

출력

첫째 줄에 ascending, descending, mixed 중 하나를 출력한다.

출력 예

ascending

 

풀이

 

  • 1차원 배열을 이용하여 미리 값을 저장해놓았다.

  • if문을 사용하여 입력받은 문자열이 정의해놓은 배열과 같은지 검사한다.

 

 

 

Code

#include <iostream>
using namespace std;

int main() {

	int a[8] = { 1,2,3,4,5,6,7,8 }; //ascending
	int d[8] = { 8,7,6,5,4,3,2,1 }; //descending

	int an = 0; //마지막에 맞는지 확인하기 위해서 추가
	int dn= 0;

	//8개 숫자 입력받기
	int number[8];
	for (int i = 0; i < 8; i++)
		cin >> number[i];
	//입력받은 문자열이 어떤 것인지 판별하는 반복문
	for (int i = 0; i < 8; i++) {
		if (number[i] == a[i])
			an++;
		else if (number[i] == d[i])
			dn++;
		else break;
	}
	if (an == 8)
		cout << "ascending";
	else if (dn == 8)
		cout << "descending";
	else cout << "mixed";
}

 

ScreenShot