[java] 백준 - 수들의 합 5

동훈·2024년 3월 11일

https://www.acmicpc.net/problem/2018
백준 2018 번 문제

처음 문제 풀었을 때, 배열에 다 집어넣고 for 문 돌려서 더해서 N 값 비교하고 이런식으로
문제를 풀려고 했으나, 코딩테스트를 준비하고 있기 때문에 시간복잡도를 생각하고 문제를 풀어야한다.

지금 인프런에 강의 듣고, 조금 충격 받은게 뭐냐면
아.. 이런식의 투포인트 방식으로도 이런 수들 합 문제를 풀 수 있구나
처음 접한 알고리즘이라서 바로 이해는 어려웠지만, 대충 설명 들으니까 이해는 됐다.
이걸 내껄로 만들기위해서 다시 코드도 짜보고 정리하는 중 입니다.

package inflearn;

import java.util.IllegalFormatCodePointException;
import java.util.Scanner;

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

        int count = 1;
        int sum = 1;
        int end_index = 1;
        int first_index = 1;

        while (end_index != N){

            if (sum == N){
                count++;
                end_index++;
                sum = sum + end_index;
            } else if (sum > N) {
                sum = sum - first_index;
                first_index++;

            }else if(sum < N ){
                end_index++;
                sum = sum + end_index;
            }
        }
        System.out.println(count);

    }
}

여기에서 count를 1 로 시작하는 이유는 N 값 그 자체를 이미 포함해 count++

profile
성실함 한스쿱

0개의 댓글