반응형
안녕하세요. BlockDMask 입니다.
오늘의 문제 풀어보겠습니다.
0. 제목
백준 2920 음계
BOJ 2920 음계
1. 문제 설명
다장도는 c d e f g a b C 로
총 8개 음으로 이루어져있다.
이 문제에서 8개의 음은 다음과 같이 숫자로 바꾸어 표현한다.c = 1
d = 2
e = 3
f = 4
g = 5
a = 6
b = 7
C = 81 부터 8까지 차례대로 연주한다면 ascending
8 부터 1까지 차례대로 연주한다면 descending
둘 다 아니라면 mixed 이다.연주한 순서가 주어졌을 때,
이것이 ascending 인지, descending 인지, mixed 인지 판별하는 프로그램을 작성하시오.
2. 풀이 과정
(두번째 값 - 맨 처음 값)이 1이면 계속 1 이 차이나는 ascending 이어야하고
(두번째 값 - 맨 처음 값)이 -1이면 계속 -1 이 차이나는 descending 이어야 합니다.
이 규칙을 깬다면 mixed 입니다.
3. 소스코드
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 32 33 34 35 36 37 38 | //https://www.acmicpc.net/problem/2920 //BOJ_2920_scale #include<iostream> #include<cstdio> #define LEN 8 enum {ASC=0, DESC, MIXED}; using namespace std; int main(void){ int result=0; int arr[LEN]; for(int i=0; i<LEN; i++){ scanf("%d", &arr[i]); } //초기 값 정해주기 if(arr[1]-arr[0] == 1)result = ASC; else if(arr[1]-arr[0] == -1)result = DESC; else result = MIXED; //이전 값과 같은지 아닌지 for(int i=1; i<LEN-1; i++){ if(arr[i+1]-arr[i] == 1 && result == ASC) continue; if(arr[i+1]-arr[i] == -1 && result == DESC) continue; result = MIXED; break; } if(result == ASC) cout << "ascending"; else if(result == DESC) cout << "descending"; else cout << "mixed"; return 0; } | cs |
4. 인증
문제출처 - https://www.acmicpc.net/problem/2920
감사합니다.
반응형
'<알고리즘 문제풀이&연습> > [C++] 백준, 프로그래머스 등등' 카테고리의 다른 글
[백준 2839] 설탕 배달 (0) | 2017.11.12 |
---|---|
[백준 2441] 별찍기4 (0) | 2017.11.07 |
[백준 2440] 별찍기3 (0) | 2017.11.06 |
[백준 2023] 신기한 소수 (1) | 2017.11.05 |
[백준 2615] 오목 (0) | 2017.10.31 |
[백준 2439] 별찍기2 (2) | 2017.10.30 |
[백준 2438] 별찍기1 (0) | 2017.10.29 |
[백준 2739] 구구단 (0) | 2017.10.28 |