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 처리를 하면 된다.
이 코드가 어떨때 쓰일까를 생각하며 접근하니 훨씬 코드 이해에 도움이 됐다.