오늘은 여기까지

[백준] 1253 좋다 - 자바 Java 본문

Problem Solving

[백준] 1253 좋다 - 자바 Java

dev-99 2024. 7. 8. 03:41

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

 

  • 투 포인터를 활용해 문제를 풀기 위해 숫자를 정렬해준다.
  • 예를 들어, 현재 판별하려는 수가 5일때 `num[start]` 또는 `num[end]`가 5와 같은 경우 count를 증가 시키면 안된다.
    • 이걸 생각 못해서(?) 한참 헤맸다.
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));
        int N = Integer.parseInt(br.readLine());
        long[] num = new long[N];
        StringTokenizer st = new StringTokenizer(br.readLine());
        for (int i = 0; i < N; i++) {
            num[i] = Long.parseLong(st.nextToken());
        }
        Arrays.sort(num);
        int target = 0, count = 0;
        while (target < N) {
            int start = 0, end = N - 1;
            long sum = 0;
            while (start < end) {
                sum = num[start] + num[end];
                if (sum == num[target]) {
                    if (start != target && end != target) {
                        count++;
                        break;
                    } else if (start == target) {
                        start++;
                    } else if (end == target) {
                        end--;
                    }
                }
                else if (sum < num[target]) {
                    start++;
                } else if (sum > num[target]) {
                    end--;
                }
            }
            target++;
        }
        System.out.println(count);
    }
}