백준

[JAVA] 백준 2920번 음계

DEV장화 2023. 3. 6. 23:41
728x90
반응형

 

문제

 

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

 

 

풀이
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        String b = scanner.nextLine();
        String[] c = b.split(" ");
        int[] a = new int[8];
        for (int i = 0; i < c.length; i++) {
            a[i] = Integer.parseInt(c[i]);
        }

        String res = "";
        int sum = 0;
        int sum2 = 0;
        for (int i = 0; i < 8; i++) {
            if (a[i] == i+1){
                sum++;
            } else if (a[i] == 8-i) {
                sum2++;
            }
        }

        if (sum == 8){
            System.out.println("ascending");
        } else if (sum2 == 8) {
            System.out.println("descending");
        } else {
            System.out.println("mixed");
        }
    }
}

 

 

1.

string b로 숫자를 입력 받은 후 for문을 이용해 int 배열로 바꿔넣어준.

String b = scanner.nextLine();
String[] c = b.split(" ");
int[] a = new int[8];
for (int i = 0; i < c.length; i++) {
    a[i] = Integer.parseInt(c[i]);
}

 

2.

"ascending"일 경우 카운트 +1 해줄 변수와 "descending" 일 경우 카운트 +1 해줄 변수를

각각 sum과 sum2 라는 이름으로 선언해준다.

 

그리고 for문을 돌려 

{1,2,3,4,5,6,7,8}로 나올 경우의 조건과

{8,7,6,5,4,3,2,1}로 나올 경우의 조건을 걸어 카운트 +1 해준다.

 

ex)  {1,2,3,4,5,6,7,8}를 입력했을 경우

i=0이라면

a[i] == i+1  ->  1 == 1이 되고  

i=1이라면

a[i] == i+1  ->  2 == 2 가 된다.

 

int sum = 0;
int sum2 = 0;
for (int i = 0; i < 8; i++) {
    if (a[i] == i+1){
        sum++;
    } else if (a[i] == 8-i) {
        sum2++;
    }
}

 

 

3.

sum이 8이라면 "ascending"를 sum2 이 8이라면  "descending" 를, 그 무엇도 아니라면 "mixed"를 출력한다.

if (sum == 8){
    System.out.println("ascending");
} else if (sum2 == 8) {
    System.out.println("descending");
} else {
    System.out.println("mixed");
}

 

 

 

금방 풀 수 있을 문제 같았는데 생각보다 많이 애먹었다...

728x90
반응형