본문 바로가기
알고리즘

[백준] 2018번: 수들의 합 5 - java

by 육빔 2024. 7. 10.
728x90
반응형

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

 

투 포인터 문제는 처음 풀어본다. 알고리즘이 기가막힌것같다.. 

 

앞에서 시작하는 포인터를 2개를 두고 while문으로 끝까지 가면서 포인터를 줄이고, 늘리고 count를 세며 앞으로 나아가는게 핵심인 알고리즘이다. 

 

구현은 아래를 보자

import java.util.Scanner;

public class App {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int count = 1;
        int start = 1;
        int end = 1;

        int sum = 1;

        while (end != N) {
            if(sum==N){
                count++; end++; sum = sum + end;
            }else if(sum>N){
                sum = sum - start;
                start++;
            }else{
                end++; sum = sum + end;
            }           
        }
        System.out.println(count);
    }
}

 

완성

 

728x90
반응형