문제
https://www.acmicpc.net/problem/3649
풀이(17분)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = null;
StringBuilder sb = new StringBuilder();
while((input = br.readLine()) != null){
int size = Integer.parseInt(input) * 10_000_000; // cm -> nano
int n = Integer.parseInt(br.readLine());
int[] arr = new int[n];
for(int i = 0; i < n; i++){
arr[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(arr);
int start = 0;
int end = n-1;
boolean flag = false;
while(start < end){
int total = arr[start] + arr[end];
if(total == size){
sb.append("yes ").append(arr[start]).append(" ").append(arr[end]).append("\n");
flag = true;
break;
}
if(total < size){
start++;
continue;
}
end--;
}
if(!flag){
sb.append("danger").append("\n");
}
}
System.out.print(sb);
}
}
문제 풀이 전략
문제 자체는 단순한 투포인터로 비교를 통해 정답을 도출하면 되는 문제였다.
근데 왜 골5 문제일까?
아마도 EOF 입력을 처리하는 것이 중요하다고 생각한다.
while((input = br.readLine()) != null){
다음과 같이 입력을 처리함으로써 입력이 끝나는 것을 처리해주어야 한다.
'문제 풀이 > 백준' 카테고리의 다른 글
[백준] 12931번. 두 배 더하기(JAVA) (0) | 2025.06.25 |
---|---|
[백준] 2346번. 풍선 터뜨리기(JAVA) (0) | 2025.06.24 |
[백준] 16120번. PPAP(JAVA) (1) | 2025.06.15 |
[백준] 24268번. 2022는 무엇이 특별할까?(JAVA) (1) | 2025.06.14 |
[백준] 3908번. 서로 다른 소수의 합(JAVA) (1) | 2025.06.13 |