[백준 1253] 좋은 수 구하기(투 포인터)

문제

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

 

1253번: 좋다

첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수)

www.acmicpc.net

 

코드

package org.kyhslam.DoItAlgorithm.ch02;

import java.util.Arrays;
import java.util.Scanner;

public class p1253 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int[] A = new int[N];
        int answer = 0;

        for (int i = 0; i < N; i++) {
            A[i] = sc.nextInt();
        }

        Arrays.sort(A);
        //1 2 3 4 5 6 7 8 9 10
        for (int i = 0; i < N; i++) {
            int K = A[i];

            int start = 0;
            int end = N-1;

            while (start < end) {
                if(A[start] + A[end] == K) {
                    if (i != start && i != end) {
                       answer++;
                       start--;
                       end--;
                       break;
                    } else if (i == start) {
                        start++;
                    } else if (i == end) {
                        end--;
                    }
                } else if(A[start] + A[end] > K) {
                    end--;
                } else if(A[start] + A[end] < K) {
                    start++;
                }
            }
        } // end for

        System.out.println("answer = " + answer);
    }
}

댓글

Designed by JB FACTORY