반응형
백준 Baekjoon 11479번 통나무 건너뛰기 - JAVA
문제 풀이
가장 난이도가 낮은 배열로 만드는 방법이 무엇인지 찾아야 한다. 첫번째 통나무와 마지막 통나무도 연결된 것으로 단순히 정렬하는 것으로는 답을 구할 수가 없다. 문제에서 주어진 {2, 4, 5, 7, 9}의 답은 [2, 5, 9, 7, 4]이다. 예시를 보면 가장 작은 값들을 양 끝에 두고 가운데로 갈 수록 갚이 커진다는 것을 보고 문제 풀이를 유추할 수 있다.
- 주어진 입력 배열을 정렬시킨다.
- 정렬된 배열의 숫자를 새로운 배열 양끝에 번갈아 가며 넣는다.
- 배열에서 최대 난이도를 찾아 출력한다.
소스 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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));
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
while (T-- > 0) {
int N = Integer.parseInt(br.readLine());
int[] logs = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
logs[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(logs);
int[] pattern = new int[N];
int left = 0, right = N - 1;
for (int i = 0; i < N; i++) {
if (i % 2 == 0) {
pattern[left++] = logs[i];
} else {
pattern[right--] = logs[i];
}
}
int max = 0;
for (int i = 0; i < N - 1; i++) {
max = Math.max(max, Math.abs(pattern[i] - pattern[i + 1]));
}
sb.append(max).append("\n");
}
System.out.println(sb);
}
}
반응형
'알고리즘(Algorithm) > 백준(Baekjoon)' 카테고리의 다른 글
[백준 Baekjoon] 10157번 자리배정 - JAVA (0) | 2021.11.20 |
---|---|
[백준 Baekjoon] 1389번 케빈 베이컨의 6단계 법칙 - JAVA (0) | 2021.11.19 |
[백준 Baekjoon] 5212번 지구 온난화 - JAVA (0) | 2021.11.17 |
[백준 Baekjoon] 3077번 임진왜란 - JAVA (0) | 2021.11.17 |
[백준 Baekjoon] 16992번 로마 숫자 만들기 - JAVA (0) | 2021.11.16 |