[백준/1253] 좋다 - JAVA

이지환·2024년 2월 18일

알고리즘(백준) 💻

목록 보기
44/80
post-thumbnail

📌 문제

알고리즘 분류 : 투포인터
난이도 : 골드4
출처 : 백준 - 좋다

🦧 문제 풀이 접근

투포인터로 접근하면서 좋은 수의 개수를 확인한다.
이때 '어떤수가 다른 수 두개의 합으로' 라는 말을 주의하자

예를 들어 0과 4을 이용해서 4를 만들수 있더라도 4는 좋은 수가 아니다.

💻 code

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 br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int N = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine()," ");
        Integer[] array = new Integer[N];
        for(int i=0;i<N;i++) {
            array[i] = Integer.parseInt(st.nextToken());
        }
        Arrays.sort(array);
        int goodCnt = 0;
        for(int i=0;i<N;i++) {
            int firstPointer = 0, secondPointer = N-1;
            while(true) {
                if(firstPointer==i)
                    firstPointer++;
                else if(secondPointer==i)
                    secondPointer--;

                if(firstPointer>=secondPointer)
                    break;
                
                if(array[firstPointer]+array[secondPointer]==array[i]) {
                    goodCnt++;
                    break;
                }
                else if(array[firstPointer]+array[secondPointer]>array[i])
                    secondPointer--;
                else
                    firstPointer++;
            }
        }
        System.out.println(goodCnt);
    }
}

🥇 결과

🎓 느낀점

'어떤수가 다른 수 두개의 합으로'라는 말을 간과해서 문제를 푸는데 시간이 많이 소비되었다. 문제를 신중하게 읽자!

profile
takeitEasy

0개의 댓글