본문 바로가기

알고리즘

[백준] 2920번: 음계 (java, python)

https://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


🗒 풀이

java

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] arr = new int[8];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = sc.nextInt();
        }
        sc.close();

        String result = "";
        for (int i = 0; i < arr.length - 1; i++) {
            if (arr[i] == arr[i + 1] - 1) {
                result = "ascending";
            } else if (arr[i] == arr[i + 1] + 1) {
                result = "descending";
            } else {
                result = "mixed";
                break;
            }
        }
        System.out.println(result);
    }
}
  • 8개의 음계를 저장할 배열을 생성한 후, 입력되는 값들을 하나씩 저장
  • 결과값을 출력할 result 문자열 생성 후, for문을 통해 배열 탐색
  • 각 배열을 돌면서 현재 인덱스 값과 다음 인덱스 값을 비교하면서 오름차순인지, 내림차순인지, 혼합인지 판단
  • 혼합이 확인된 경우, 나머지 인덱스들은 볼 것도 없이 그냥 혼합 형태이므로, break로 빠져나가 준다

 


python

arr = list(map(int, input().split()))
if arr == sorted(arr):
    print('ascending')
elif arr == sorted(arr, reverse=True):
    print('descending')
else:
    print('mixed')
  • 리스트를 정렬해주는 sorted() 함수를 사용하며, 이때 reverse=True로 하면 역순, 즉 내림차순 정렬이 된다