<알고리즘 문제풀이&연습>/[C++] 백준, 프로그래머스 등등

[백준 2920] 음계

BlockDMask 2017. 11. 3. 15:37
반응형
  • 안녕하세요. 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 = 8

  • 1 부터 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