[๋ฐฑ์ค€] 1806 ๋ถ€๋ถ„ํ•ฉ (python ํŒŒ์ด์ฌ)

2022. 7. 29. 04:03ยท๐Ÿงฉ Problem Solving/[๋ฐฑ์ค€]

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

 

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

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

www.acmicpc.net


์•„์ด๋””์–ด

1. ๋ถ€๋ถ„ํ•ฉ ์‚ฌ์šฉ

  • ๋ถ€๋ถ„ํ•ฉ์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์–˜๊ธฐํ•ด๋ณด๋ฉด 0 ~ N๊นŒ์ง€์˜ ํ•ฉ์„ ๋ฏธ๋ฆฌ ๊ตฌํ•ด๋‘๊ณ  ํ•ฉ์˜ ์ฐจ((0 ~ b๊นŒ์ง€ ํ•ฉ) - (0 ~ a๊นŒ์ง€ ํ•ฉ))๋ฅผ ํ†ตํ•ด a๋ถ€ํ„ฐ b๊นŒ์ง€ ์ˆ˜์˜ ํ•ฉ์„ ๋น ๋ฅด๊ฒŒ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
  • ๊ทธ๋ž˜์„œ for๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ๊ธธ์ด๊ฐ€ 1์ผ ๋•Œ, 2์ผ ๋•Œ... N์ผ ๋•Œ ๋ถ€๋ถ„ํ•ฉ์˜ ๊ฐ’์„ ๊ตฌํ•ด๋ณด๋ฉฐ S๊ฐ’์ด ๋„˜๋Š” ์ˆœ๊ฐ„ ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•˜๋„๋ก ์ฝ”๋“œ๋ฅผ ์งฐ๋‹ค. ๋‹น์—ฐํ•˜๊ฒŒ๋„ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋–ด๋‹ค. ์•„๋งˆ ๊ธธ์ด๊ฐ€ ๊ธด ๊ฒฝ์šฐ ๋•Œ๋ฌธ์ธ ๊ฑฐ ๊ฐ™๋‹ค.
  • ๊ณ ๋ฏผ ๊ณ ๋ฏผํ•˜๋‹ค ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„๋ฅ˜๋ฅผ ๋ณด๊ณ  ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค. 

2. ํˆฌ ํฌ์ธํ„ฐ

  • ๋‹ค์‹œ ๋ณด๋ฉด ์ดํ•ด๊ฐ€ ๊ฐ€์ง€๋งŒ ์ฒ˜์Œ ๋ดค์„ ๋•Œ๋Š” ํˆฌ ํฌ์ธํ„ฐ๋Š” ์ƒ๊ฐ์„ ๋ชปํ–ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ํˆฌ ํฌ์ธํ„ฐ๋ฅผ ๋– ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค. ์งง์€ ์‹œ๊ฐ„์ œํ•œ์ด ํžŒํŠธ์ธ ๊ฑฐ ๊ฐ™๊ธด ํ•˜๋‹ค.
  • ํˆฌ ํฌ์ธํ„ฐ ๋ฌธ์ œ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๋ฉด ์ดํ›„ ํ’€์ด ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•˜๋‹ค.
  • ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋ถ€๋ถ„ํ•ฉ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ํˆฌ ํฌ์ธํ„ฐ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค.

์ „์ฒด ์ฝ”๋“œ

import sys
N, S = map(int, input().split())
array = [int(x) for x in sys.stdin.readline().rstrip().split()]

left = 0
right = 0
length = 100000
temp_sum = array[0]

while left <= right:
    if temp_sum >= S:
        length = min(length, right - left + 1)
        temp_sum -= array[left]
        left += 1
    else:
        right += 1
        if right < N:
            temp_sum += array[right]
        else:
            break

if length == 100000:
    print(0)
else:
    print(length)

์ฝ”๋“œ ์„ค๋ช…

left = 0
right = 0
length = 100000
temp_sum = array[0]

while left <= right:
    if temp_sum >= S:
        length = min(length, right - left + 1)
        temp_sum -= array[left]
        left += 1
    else:
        right += 1
        if right < N:
            temp_sum += array[right]
        else:
            break

๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋ฉด ๋ถ€๋ถ„ํ•ฉ์ด S๋ฅผ ๋„˜์œผ๋ฉด left๋ฅผ ํ•œ ์นธ ์˜ฎ๊ฒจ์„œ ํ•ฉ์„ ์ค„์—ฌ๋ณด๊ณ 

์•„๋‹ˆ๋ผ๋ฉด right๋ฅผ ํ•œ ์นธ ์˜ฎ๊ฒจ์„œ S๋ฅผ ๋„˜๋Š”์ง€ ํ™•์ธํ•ด๋ณด๋ฉด ๋œ๋‹ค.

right๊ฐ€ N๊นŒ์ง€ ๊ฐ€๊ฑฐ๋‚˜ left๊ฐ€ right๋ฅผ ๋„˜๊ธฐ๋ฉด ์ข…๋ฃŒ ํ•ด์ค€๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๋ถ€๋ถ„ํ•ฉ์ด S๋ฅผ ๋„˜๊ธธ ๋•Œ ๊ธฐ์กด์˜ ์ €์žฅ๋œ ๊ธธ์ด(length)์™€ ํ˜„์žฌ ๊ธธ์ด(right - left + 1)๋ฅผ ๋น„๊ตํ•ด์„œ ์ž‘์€ ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.

 

์ถœ๋ ฅ์—์„œ ํ•ฉ์„ ๋งŒ๋“œ๋Š” ๊ฒŒ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉด 0์„ ์ถœ๋ ฅํ•˜๋ผ ํ•˜์˜€์œผ๋ฏ€๋กœ

length๊ฐ€ 100000์ด๋ฉด(if temp_sum >= S ๊ตฌ๋ฌธ์ด ์‹คํ–‰ ์•ˆ๋œ ๊ฒฝ์šฐ) 0์„ ์ถœ๋ ฅํ•˜๊ณ 

์•„๋‹ˆ๋ผ๋ฉด length๊ฐ’์„ ์ถœ๋ ฅํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

 

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿงฉ Problem Solving > [๋ฐฑ์ค€]' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐฑ์ค€] 1644 ์†Œ์ˆ˜์˜ ์—ฐ์†ํ•ฉ (python ํŒŒ์ด์ฌ)  (0) 2022.07.31
[๋ฐฑ์ค€] 9466 ํ…€ ํ”„๋กœ์ ํŠธ (python ํŒŒ์ด์ฌ)  (0) 2022.07.31
[๋ฐฑ์ค€] 1504 ํŠน์ •ํ•œ ์ตœ๋‹จ ๊ฒฝ๋กœ (python ํŒŒ์ด์ฌ)  (0) 2022.07.28
[๋ฐฑ์ค€] 12100 2048(easy) (python ํŒŒ์ด์ฌ)  (0) 2022.07.25
[๋ฐฑ์ค€] 15654 N๊ณผ M(5) (python ํŒŒ์ด์ฌ)  (0) 2022.07.13
'๐Ÿงฉ Problem Solving/[๋ฐฑ์ค€]' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐฑ์ค€] 1644 ์†Œ์ˆ˜์˜ ์—ฐ์†ํ•ฉ (python ํŒŒ์ด์ฌ)
  • [๋ฐฑ์ค€] 9466 ํ…€ ํ”„๋กœ์ ํŠธ (python ํŒŒ์ด์ฌ)
  • [๋ฐฑ์ค€] 1504 ํŠน์ •ํ•œ ์ตœ๋‹จ ๊ฒฝ๋กœ (python ํŒŒ์ด์ฌ)
  • [๋ฐฑ์ค€] 12100 2048(easy) (python ํŒŒ์ด์ฌ)
์ œ๋ด‰์•„
์ œ๋ด‰์•„
  • ์ œ๋ด‰์•„
    Overthinking
    ์ œ๋ด‰์•„
    fake it till you make it.
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (106)
      • ๐Ÿงฉ Problem Solving (83)
        • [๋ฐฑ์ค€] (74)
        • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] (7)
        • [SW Expert Academy] (1)
        • [์•Œ๊ณ ๋ฆฌ์ฆ˜ for PS] (1)
      • ๐Ÿ“ฆ Data Structure (2)
      • ๐Ÿ“œ Language (14)
        • [python] (14)
      • ๐Ÿ–ค Git (1)
      • ๐ŸŒ† ์ผ์ƒ (4)
        • ๐Ÿ’ฌ ๋ฒฝ๋ณด๊ณ  ๋งํ•˜๊ธฐ (4)
      • ๐Ÿ—„๏ธ ๊ธฐํƒ€ (2)
      • ๐Ÿ”ต css (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ๋ธŒ๋ฃจํŠธํฌ์Šค
    ์ •์ฒ˜๊ธฐ
    ๋ฐ๋ธŒ์ฝ”์Šค
    imos
    ํˆฌํฌ์ธํ„ฐ
    slicing
    BFS
    ์Šคํƒ
    ๋ถ„ํ•  ์ •๋ณต
    DP
    ๋‹ค์ต์ŠคํŠธ๋ผ
    ์œ„์ƒ์ •๋ ฌ
    ๋ˆ„์ ํ•ฉ
    ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ
    boj
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ๋ฐฑ์ค€
    ๋ฐฑํŠธ๋ž˜ํ‚น
    Bruteforce
    ๊ทธ๋ฆฌ๋””
    ๋ƒ…์ƒ‰
    ํŒŒ์ด์ฌ
    ๊ตฌํ˜„
    Python
    SWEA
    ๋ถ€๋ถ„ํ•ฉ
    ํ”Œ๋กœ์ด๋“œ์›Œ์…œ
    ํŒฐ๋ฆฐ๋“œ๋กฌ
    DFS
    ์žฌ๊ท€
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
์ œ๋ด‰์•„
[๋ฐฑ์ค€] 1806 ๋ถ€๋ถ„ํ•ฉ (python ํŒŒ์ด์ฌ)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”