https://www.acmicpc.net/problem/3649
해당 문제에서 제일 당황스러웠던건...
테스트 케이스 수가 주어지지 않았던거...
문제를 똑바로 안읽어서 여러번 틀렸는데 좀 당황스러웠음...
문제 자체는 간단했다! 투 포인터를 이용하는 문제인데 먼저 블록을 길이 순서대로 정렬하는 것이 필요했다.
일단 정렬해..
그리고 정렬 후 최솟값을 left(l)로 최댓값을 right(r)로 설정하고
찾아야하는 길이가 l과 r의 길이의 합보다 길다면 l을 옮기고
짧다면 r을 옮겨 길이를 찾을 수 있도록 했다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String t = null;
while((t = br.readLine()) != null) {
int x = Integer.parseInt(t);
x *= 10000000;
int n = Integer.parseInt(br.readLine());
int[] block = new int[n];
for (int i = 0; i < n; i++) {
block[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(block);
int l = 0, r = n - 1;
boolean flag = false;
while (l < r) {
int sum = block[l] + block[r];
if (sum == x) {
System.out.printf("yes %d %d\n", block[l], block[r]);
flag = true;
break;
} else if (sum > x) {
r--;
} else {
l++;
}
}
if (!flag) {
System.out.println("danger");
}
t = null;
}
}
}
'알고리즘' 카테고리의 다른 글
[boj21758/Java] 꿀 따기 (0) | 2023.07.31 |
---|---|
[boj2531, 15961/Java] 회전 초밥 (0) | 2023.07.31 |
[boj17144/Java] 미세먼지 안녕! (0) | 2023.07.26 |
[boj5397/Java] 키로거(Stack) (0) | 2023.07.24 |
[boj13335/Java] 트럭(Queue 사용법) (0) | 2023.07.24 |