[백준/BOJ] 1806 부분합 - JAVA

2025. 6. 11. 18:08·알고리즘/문제풀이

[백준/BOJ] 1806 부분합 - JAVA

문제

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

 

문제 분석

조건

10,000개 이상의 자연수로 이루어진 수열에서, 연속된 수들의 부분합 중에 그 합이 S 이상이 되는 것 중, 가장 짧은 것의 길이를 구하는 문제

풀이방법

투 포인터(슬라이딩 윈도우)를 활용하여 문제를 풀었다. `end`포인터를 한칸씩 옮기며 구간 합을 계산하였고, 조건이 만족했을 때 start를 옮기며 최소 길이를 비교하였다.

코드

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

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

        st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int S = Integer.parseInt(st.nextToken());
        int[] arr = new int[N];
        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < N; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }
        int start = 0;
        int sum = 0;
        int answer = N + 1;

        // end 포인터가 배열의 끝까지 이동
        for (int end = 0; end < N; end++) {
            sum += arr[end];
            while (sum >= S) {
                answer = Math.min(answer, end - start + 1);
                sum -= arr[start];
                start++;
            }
        }
        if (answer == N + 1) {
            System.out.println(0);
        } else {
            System.out.println(answer);
        }
    }
}
728x90
저작자표시 비영리 변경금지 (새창열림)
'알고리즘/문제풀이' 카테고리의 다른 글
  • [프로그래머스] 17678 [1차] 셔틀버스 - JAVA
  • [프로그래머스] 42884 단속카메라 - JAVA
  • [백준/BOJ] 19237 어른 상어 - JAVA
  • [프로그래머스] 12929 올바른 괄호의 갯수 - JAVA (카탈란 수)
LIRI
LIRI
  • LIRI
    기록
    LIRI
  • 전체
    오늘
    어제
    • 분류 전체보기 (74)
      • 블로그 꾸미기 (0)
      • Spring (6)
      • 바이브코딩 (1)
      • React (3)
      • CS (0)
      • 알고리즘 (57)
        • 개념 (2)
        • 문제풀이 (54)
      • Java (1)
      • DB (1)
      • log (4)
        • SSAFY (3)
        • 궁금 (1)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 공지사항

  • 인기 글

  • 태그

    알고리즘 문제풀이
    LIS
    SSAFY 9기
    springboot
    SSAFY
    lv3
    커서ai
    Security
    LV2
    BOJ
    프로그래머스
    너비우선탐색
    BFS
    dfs
    Spring
    바이브코딩
    Springsecurity
    리액트
    백준
    Java
    알고리즘
    JWT
    느좋코딩
    비트마스킹
    최장증가부분수열
    pccp모의고사
    dp
    싸피
    그리디
    ssafy 합격 후기
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
LIRI
[백준/BOJ] 1806 부분합 - JAVA
상단으로

티스토리툴바