본문 바로가기
문제풀이/백준

[JAVA] 주몽 - 백준 1940

by PhoB 2025. 5. 20.

https://www.acmicpc.net/problem/1940

내 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(input.readLine());
        int m = Integer.parseInt(input.readLine());
        StringTokenizer st = new StringTokenizer(input.readLine());
        int[] array = new int[n];
        for (int i = 0; i < n; i++){
            array[i] = Integer.parseInt(st.nextToken());
        }
        int left = 0;
        int right = n-1;
        int answer = 0;
        Arrays.sort(array);

        while(left < right){
            int tmp = array[left] + array[right];
            if(tmp == m) {
                answer++;
                left++;
                right--;
            }
            else if (tmp < m) {
                left++;
            } else{
                right--;
            }
        }
        System.out.println(answer);

    }
}

코드 설명

단순한 슬라이딩 윈도우 문제인것 같다.
입력값이 저장된 배열을 오름차순 정렬한 후 양 끝에서 2개씩 더해서 조건에 부합하는지 확인하는 문제였다.