-
[백준] 3649 로봇 프로젝트ALGORITHM/BOJ 2021. 2. 18. 14:10
2021-02-18
1234567891011121314151617181920212223242526272829303132333435363738394041import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.Arrays;import java.util.StringTokenizer;public class Main3649 {public static int N;public static long X, arr[];public static void main(String[] args) throws Exception {BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));String temp;while((temp = bf.readLine())!= null) {StringTokenizer st = new StringTokenizer(temp.trim());X = Long.parseLong(st.nextToken())*10000000; // cm -> nano meterst = new StringTokenizer(bf.readLine().trim());N = Integer.parseInt(st.nextToken());arr = new long[N];for(int i = 0; i < N; i++) {st = new StringTokenizer(bf.readLine().trim());arr[i] = Long.parseLong(st.nextToken());}Arrays.sort(arr);boolean flag = false;if(N > 1) {int start = 0;int end = arr.length-1;while(start < end) {if(X == arr[start] + arr[end]) {System.out.println("yes " + arr[start] + " " + arr[end]);flag = true;break;}else if(arr[start] + arr[end] > X) end--;else start++;}}if(!flag) System.out.println("danger");}}}cs #문제풀이
1. 구하려는 블록의 길이 X는 나노미터로 환산을 해놓는다.
2. 레고조각들은 오름차순으로 정렬을 한다.
3. start는 첫 번째 인덱스 end값은 마지막 인덱스로 지정을 한 후, 현재 인덱스들의 값이 우리가 구하고자 하는 X의 경우 그대로 출력을 한 후 while문을 나왔다. 가장 끝과 끝에서부터 시작하기 때문에 무조건 |l1- l2|가 가장 클 것이다.
4. 만약 더한 값이 우리가 찾고자 하는 값이 아니라면, 값이 오버된 경우 end값을 땡기고, 값이 너무 적은 경우 start값을 올렸다.
'ALGORITHM > BOJ' 카테고리의 다른 글
[백준] 2623 음악프로그램 (0) 2021.02.23 [백준] 2110 공유기 설치 (0) 2021.02.23 [백준] 1062 가르침 (0) 2021.02.15 [백준] 1561 놀이공원 (0) 2021.02.13 [백준] 5676 음주 코딩 (0) 2021.02.07