• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    해결됨

코드 확인 부탁드립니다.

23.08.10 09:58 작성 조회수 226

0

package inflearn.ch03;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/*
5. 연속된 자연수의 합(투 포인터)
 */
public class Problem_5 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(br.readLine());

        int[] array = new int[N];

        for(int i = 0; i < N; i++){
            array[i] = i+1;
        }

        solution(N,array);
    }

    public static void solution(int N, int[] array){
        int start = 0;
        int end = 0;
        int sum = 0;
        int count = 0;

        while (end < N-1){
            sum += array[end++];
            if(sum == N){
                count++;
            }
            while (sum >= N){
                sum -= array[start++];
                if(sum == N){
                    count++;
                }
            }
        }

        System.out.println(count);
    }
}

강의와 다르게 범위를 줄이지 않고 while 문으로 사용해서 정답 통과를 했는데 나중에 범위가 커지면 문제가 발생할 수 있을까요?

답변 1

답변을 작성해보세요.

1

안녕하세요^^

네. 문제가 발생하지는 않을 것 같습니다. 잘 하신 코드입니다.

JH_DEV77님의 프로필

JH_DEV77

질문자

2023.08.14

답변 감사드립니다.