Backend
home
🎶

[백준] 음계

생성일
2025/02/22 07:29
태그
BaekJoon
게시일
2025/02/22
최종 편집 일시
2025/02/22 07:36

문제

해결 방안 고민

1 2 3 4 5 6 7 8 - ascending
각각의 숫자들이 공차가 +1인 등차수열 형태로 구성되어 있다.
8 7 6 5 4 3 2 1 - descending
각각의 숫자들이 공차가 -1인 등차수열 형태로 구성되어 있다.
8 1 7 2 6 3 5 4 - 어떠한 규칙도 없는 수열이다.
수열 형태를 통해 규칙을 확인하였다.

해결 방법

8개의 숫자들을 비교하는 경우의 수는 7가지이다.
(1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (6, 7), (7, 8)
7번 증가하거나 7번 감소하는 경우의 수를 카운트하여 ascending, descending을 구분한다.
만약에 i번째와 i + 1 번째의 숫자 관계가 1씩 증가 or 1씩 감소하는 경우가 아니라면 즉시 비교를 멈춘다.

코드

package algo250222; import java.io.*; import java.util.*; // 음계 - 브론즈 2 public class Baek2920 { 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 ascend = 0; // 7 이면 ascending int descend = 0; // 7 이면 descending for (int i = 0; i < 8; i++) { if (i != 7 && arr[i + 1] == arr[i] + 1) { ascend++; } else if (i != 7 && arr[i + 1] == arr[i] - 1) { descend++; } else { break; } } if (ascend == 7) { bw.write("ascending"); } else if (descend == 7) { bw.write("descending"); } else { bw.write("mixed"); } bw.flush(); bw.close(); br.close(); } }
Java
복사