๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐‘†๐‘ข๐‘›๐‘ โ„Ž๐‘–๐‘›๐‘’ ๐‘Ž๐‘“๐‘ก๐‘’๐‘Ÿ ๐‘Ÿ๐‘Ž๐‘–๐‘›โœง

[Python] ํˆฌํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ & ๋ฐฑ์ค€ 2203 ์ˆ˜๋“ค์˜ ํ•ฉ2 ๋ณธ๋ฌธ

๐—ฃ๐—ฟ๐—ผ๐—ด๐—ฟ๐—ฎ๐—บ๐—บ๐—ถ๐—ป๐—ด๐Ÿ’ป/[๐๐ฒ๐ญ๐ก๐จ๐ง] ๐€๐ฅ๐ ๐จ๐ซ๐ข๐ญ๐ก๐ฆ

[Python] ํˆฌํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ & ๋ฐฑ์ค€ 2203 ์ˆ˜๋“ค์˜ ํ•ฉ2

๐ŸคRyusun๐Ÿค 2023. 9. 16. 21:31

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

  • ๋ฆฌ์ŠคํŠธ์— ์ˆœ์ฐจ์ ์œผ๋กœ ์ ‘๊ทผํ•ด์•ผํ• ๋–„, ๋‘๊ฐœ์˜ ์ ์˜ ์œ„์น˜๋ฅผ ๊ธฐ๋กํ•˜๋ฉด์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ๋ฆฌ์ŠคํŠธ์— ๋‹ด๊ธด ๋ฐ์ดํ„ฐ์— ์ˆœ์ฐจ์ ์œผ๋กœ ์ ‘๊ทผํ•ด์•ผํ• ๋•Œ ์‹œ์ž‘์ ๊ณผ ๋์  2๊ฐœ์˜ ์ ์œผ๋กœ ์ ‘๊ทผํ•  ๋ฐ์ดํ„ฐ์˜ ๋ฒ”์œ„๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

ํˆฌํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜

  1. ์‹œ์ž‘์ (start)๊ณผ ๋์ (end)์ด ์ฒซ๋ฒˆ์งธ ์›์†Œ์˜ ์ธ๋ฑ์Šค(0)์„ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ํ•œ๋‹ค.
  2. ํ˜„์žฌ ๋ถ€๋ถ„ํ•ฉ์ด M๊ณผ ๊ฐ™๋‹ค๋ฉด ์นด์šดํŠธํ•œ๋‹ค.
  3. ํ˜„์žฌ ๋ถ€๋ถ„ํ•ฉ์ด M๋ณด๋‹ค ์ž‘๋‹ค๋ฉด, end๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
  4. ํ˜„์žฌ ๋ถ€๋ถ„ํ•ฉ์ด M๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋ฉด, start๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
  5. ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ํ™•์ธํ• ๋•Œ๊นŒ์ง€ 2๋ฒˆ๋ถ€ํ„ฐ 4๋ฒˆ๊นŒ์ง€์˜ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

๋ฐฑ์ค€ 2203 ์ˆ˜๋“ค์˜ ํ•ฉ2

n, m = map(int, input().split())
num_list = list(map(int, input().split()))

# ์ฒซ๋ฒˆ์งธ ๋ฐฉ๋ฒ• : ์™„์ „ ํƒ์ƒ‰

def solution(num_list):
    cnt = 0
    for i in range(len(num_list)):
        num_sum = 0
        for j in range(i, len(num_list)):
            num_sum += num_list[j]
            if num_sum == m:
                cnt += 1
                break
            elif num_sum > m:
                break
    return cnt

print(solution(num_list))

# ๋‘๋ฒˆ์งธ ๋ฐฉ๋ฒ•: ํˆฌํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 

def solution2(num_list):
    cnt = 0
    start, end = 0, 0
    num_sum = num_list[0]
    while True:
        if num_sum < m: # ์ž‘์œผ๋ฉด end +1
            end += 1
            if end >= n: # ์ธ๋ฑ์Šค ๋ฒ”์œ„ ์ฃผ์˜
                break
            num_sum += num_list[end]
        elif num_sum == m: # ๊ฐ™์œผ๋ฉด cnt +1
            cnt += 1
            num_sum -= num_list[start]
            start += 1
        else: # ํฌ๋ฉด start +1
            num_sum -= num_list[start]
            start += 1

    return cnt

print(solution2(num_list))

 

 

์ฐธ๊ณ  

https://www.youtube.com/watch?v=ttLRltNDiCo