본문 바로가기
PS/Baekjoon

[Baekjoon] 2920 - 음계

by 서현 SEOHYEON 2022. 12. 13.

📝 문제

 

🔑 풀이 과정

이 문제는 경우의 수가 3가지 밖에 없다

 

1. 1 2 ... 7 8 → ascending

2. 8 7 ... 2 1 → descending

3. 그 외 → mixed

 

또한 1, 2 번 같은 경우는 각 경우마다 케이스가 딱 1개만 존재.

그래서 각 케이스와 같은 배열을 만들고, Arrays.equals() 를 사용하여 배열을 비교했다.

* Arrays.equals(): 배열의 주소값이 아닌, 요소의 값을 비교

 

 

다른 분들은 대부분 for문 돌리면서 앞의 요소와 뒤의 요소를 비교하면서 증가, 감소, 그 외를 판별하셨다.

그 풀이도 첨부.

 

 

 

🔓 답안

import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int[] arr = new int[8];

        for(int i = 0; i < 8; i++){
            arr[i] = Integer.parseInt(st.nextToken());
        }

        int[] asc = new int[]{1, 2, 3, 4, 5, 6, 7, 8};
        int[] desc = new int[]{8, 7, 6, 5, 4, 3, 2, 1};

        if(Arrays.equals(arr, asc)){
            bw.write("ascending\n");
        } else if(Arrays.equals(arr, desc)){
            bw.write("descending\n");
        } else{
            bw.write("mixed\n");
        }

        bw.flush();
        bw.close();
    }

}

- Arrays.equals()로 비교한 풀이

import java.io.*;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int[] arr = new int[8];

        for(int i = 0; i < 8; i++){
            arr[i] = Integer.parseInt(st.nextToken());
        }

        String str = "";
        for(int i = 0; i < 7; i++){
            if(arr[i] == (arr[i+1]-1)){
                str = "ascending";
            } else if(arr[i] == (arr[i+1]+1)){
                str = "descending";
            } else{
                str = "mixed";
                break;
            }
        }

        bw.write(str + "\n");
        bw.flush();
        bw.close();
    }
}

- for문을 돌려가면서 증가, 감소하는지 검사한 풀이

'PS > Baekjoon' 카테고리의 다른 글

[Baekjoon] 11382 - 꼬마 정민  (0) 2022.12.15
[Baekjoon] 8958 - OX퀴즈  (1) 2022.12.14
[Baekjoon] 2675 - 문자열 반복  (1) 2022.12.12
[Baekjoon] 10818 - 최소, 최대  (0) 2022.12.11
[Baekjoon] 2562 - 최댓값  (0) 2022.12.10

댓글