๊ธฐ๋ก๋ฐฉ

BOJ_1806 : ๋ถ€๋ถ„ํ•ฉ ๋ณธ๋ฌธ

CodingTest/Java

BOJ_1806 : ๋ถ€๋ถ„ํ•ฉ

Soom_1n 2023. 4. 18. 23:29

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

1806๋ฒˆ: ๋ถ€๋ถ„ํ•ฉ

์ฒซ์งธ ์ค„์— N (10 ≤ N < 100,000)๊ณผ S (0 < S ≤ 100,000,000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ์ˆ˜์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ์ˆ˜์—ด์˜ ๊ฐ ์›์†Œ๋Š” ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด์ ธ ์žˆ์œผ๋ฉฐ, 10,000์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋‹ค.

www.acmicpc.net



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • N์ž๋ฆฌ์˜ ์ˆ˜์—ด ์ค‘ ํ•ฉ์ด S์ด์ƒ์ด ๋˜๋Š” ์ˆ˜์—ด ์ค‘ ๊ฐ€์žฅ ์งง์€ ๊ฒƒ์˜ ๊ธธ์ด๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
    • N์€ 10,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋‹ค.
    • S๋Š” 0์ด์ƒ, 100,000,000(1์–ต) ์ดํ•˜์ด๋‹ค.
  • ์ˆ˜์—ด์˜ ๋ชจ๋“  ์ˆ˜๋ฅผ ํ™•์ธํ•˜๊ธด ํ•ด์•ผํ•œ๋‹ค.
    • ํ•ฉ์ด S๊ฐ€ ๋˜๋Š” ๊ฒƒ์„ ํšจ์œจ์ ์ด๊ฒŒ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด์„œ, ๋งค๋ฒˆ ์ „๋ถ€ ๋”ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ•˜๋‚˜์”ฉ ๋”ํ•˜๊ณ  ๋นผ๋ฉฐ ์ง„ํ–‰ํ•œ๋‹ค.
    • ๋”ฐ๋ผ์„œ ํˆฌํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer 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 len = N + 1;
        int sum = arr[0];
        int left = 0, right = 0;

        while (left <= right && right < N) {
            if (sum >= S) {
                len = Integer.min(len, right - left + 1);
                sum -= arr[left++];
            } else if (right == N - 1) break;
            else
                sum += arr[++right];
        }

        System.out.print(len < N + 1 ? len : 0);
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • ์™ผ์ชฝ ํฌ์ธํ„ฐ์™€ ์˜ค๋ฅธ์ชฝ ํฌ์ธํ„ฐ left, right๋ฅผ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.
  • ํ•ฉ๊ณ„ sum์ด S๋ณด๋‹ค ์ž‘์œผ๋ฉด ์›์†Œ๋ฅผ ๋”ํ•ด์ค˜์•ผ ํ•˜๋ฏ€๋กœ, right๋ฅผ ํ•˜๋‚˜ ๋Š˜๋ฆฌ๊ณ , sum์— arr[right]๋ฅผ ๋”ํ•œ๋‹ค.
  • ํ•ฉ๊ณ„ sum์ด S๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด ์›์†Œ๋ฅผ ๋นผ์ค˜์•ผ ํ•˜๋ฏ€๋กœ, sum์—์„œ arr[left]๋ฅผ ๋นผ๊ณ  left๋ฅผ ํ•˜๋‚˜ ๋Š˜๋ฆฐ๋‹ค.
    • ์ด๋•Œ ๊ธธ์ด len๋„ ์ตœ์†Œ๊ฐ’์œผ๋กœ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.
  • right๊ฐ€ N์˜ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๊นŒ์ง€ ๋„์ฐฉํ•˜๋ฉด ๋ฐ˜๋ณต์„ ์ข…๋ฃŒํ•˜๊ณ  len์„ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ํˆฌํฌ์ธํ„ฐ๋ผ๋Š” ์•„์ด๋””์–ด๊ฐ€ ๋– ์˜ค๋ฅธ ๋’ค์—๋Š” ์‰ฝ๊ฒŒ ํ’€์ดํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

728x90