백준 투포인터 문제

정호윤·2023년 3월 20일

자바

목록 보기
40/46

백준문제링크

연속된 숫자의 합을 찾는 문제이다.투 포인터라는 알고리즘을 이용해서 풀면 된다.텍스트만 봤을 때는 어려웠으나 설명 영상을 한번 보니 간단하게 이해가 됐다.

import java.util.*;
import java.io.*;

public class Main {
	
	public static void main(String args[]) throws IOException {
       BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
       BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
       int N = Integer.parseInt(br.readLine());
		// 자기 자신은 항상 자신이다.그렇기에 count는 1로 초기화
        // 마지막에 자기 자신이 항상 카운트되므로
        // 자연수는 1에서 시작하기에 sum을 1로 초기화
        // start가 왼쪽으로 간다 = 숫자를 하나 뺀다
        // finish가 왼쪽으로 간다 = 숫자를 하나 더한다
       int sum = 1;
       int count = 1;
       int startIndex = 1;
       int finishIndex = 1;

       while(finishIndex != N){
        if(sum<N){
            finishIndex++;
            sum+=finishIndex;
        }else if(sum>N){
            sum-=startIndex;
            startIndex++;
        }else{
            count++;
            finishIndex++;
            sum+=finishIndex;
        }
       }
       bw.write(String.valueOf(count));
       bw.flush();
       bw.close();
       br.close();
    }
}
profile
개발자로 취직을 희망합니다.

0개의 댓글