[백준] 두 수의 합

geesuee·2021년 9월 26일
0
post-thumbnail

알고리즘 문제 풀이를 블로그에 올리는 이유는 풀이, 코드를 기록하기 위함이니
앞으로 문제를 다 긁어오기보다 링크만 두고 풀이가 잘 보이도록 포스팅 할 예정입니다!

📄 문제

[백준] 두 수의 합


👩‍💻 풀이

1. 문제 이해

이 문제는 주어진 수열 내 두 수를 더한 결과 특정 수가 되는 경우의 수를 구하는 문제이다.


2. 풀이

이중 반복문을 쓰지 않고 투 포인터를 사용하면 간단하게 풀 수 있다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;

        int n = Integer.parseInt(br.readLine());
        int[] arr = new int[n];
        st = new StringTokenizer(br.readLine(), " ");
        for(int i = 0; i < n; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }
        int x = Integer.parseInt(br.readLine());

        //twoPointer
        int start = 0;
        int end = n-1;
        int count = 0;

        Arrays.sort(arr);

        while(start != end) {
            if(arr[start] + arr[end] == x) {
                count++;
                //System.out.println(arr[start] + " " + arr[end] + " = " + (arr[start]+arr[end]));
            }if(arr[start] + arr[end] > x) {
                end--;
            }else {
                start++;
            }
        }
        System.out.println(count);
    }
}
profile
기록하는 오늘의 노력🌻

0개의 댓글