[백준] 2920 음계 (후기)

차누·2024년 3월 7일
0

문제

https://www.acmicpc.net/problem/2920

후기

문제는 이해했지만 어떻게 접근 해야 하는지 20분 고민을 하다 도무지 생각이 나지가 않아
문제 풀이를 봤다.

코드

import java.util.Scanner;

public class bj_2920 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner sc = new Scanner(System.in);
		
		int [] arr_int = new int[8];
		String result_str = "";
		
		for(int i = 0; i < 8; i++) {
			
			arr_int[i] = sc.nextInt();
		}
		
		for(int i = 0; i < arr_int.length-1; i++) {
			
			if(arr_int[i] == arr_int[i + 1] -1) {
				
				result_str = "ascending";
			}
			
			//감소하고 있는경우
			else if(arr_int[i] == arr_int[i + 1] + 1) {
				
				result_str = "descending";
			}
			
			//그 외
			else {
				
				result_str = "mixed";
				break;
				
			}
		}
		
		System.out.print(result_str);
	}
}

코드를 이해하려고 해도 "현재값이랑 다음 인덱스값에 -1를 하지"라는 의문점을 가지고 1시간 정도 고민했다.

그 결과 ascending의 조건이
1, 2 3 4 5 6 7 8 일 때
다음 값에 -1을 했을 때 일정한지를 판별하는 문제라는걸 알게 되었다.
똑같이
descending 조건도
8, 7 6 5 4 3 2 1 일 때
다음 값에 +1을 했을 때 일정한지를 판별하면 된다.
mixed의 조건
일정하지 않을 때 else로 mixed 처리를 하면 된다.

느낀 점

이 코드가 어떨때 쓰일까를 생각하며 접근하니 훨씬 코드 이해에 도움이 됐다.

profile
to be good programmer

0개의 댓글