์ˆ˜๋“ค์˜ ํ•ฉ

๐Ÿ“„ ๋ฌธ์ œ

N๊ฐœ์˜ ์ˆ˜๋กœ ๋œ ์ˆ˜์—ด A[1], A[2], …, A[N] ์ด ์žˆ๋‹ค.
์ด ์ˆ˜์—ด์˜ i๋ฒˆ์งธ ์ˆ˜๋ถ€ํ„ฐ j๋ฒˆ์งธ ์ˆ˜๊นŒ์ง€์˜ ํ•ฉ A[i]+A[i+1]+…+A[j-1]+A[j]๊ฐ€ M์ด ๋˜๋Š”
๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

โ–ฃ ์ž…๋ ฅ์„ค๋ช…
์ฒซ์งธ ์ค„์— N(1≤N≤10,000), M(1≤M≤300,000,000)์ด ์ฃผ์–ด์ง„๋‹ค.
๋‹ค์Œ ์ค„์—๋Š” A[1], A[2], …, A[N]์ด ๊ณต๋ฐฑ์œผ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์ฃผ์–ด์ง„๋‹ค.
๊ฐ๊ฐ์˜ A[x]๋Š” 30,000์„ ๋„˜์ง€ ์•Š๋Š” ์ž์—ฐ์ˆ˜์ด๋‹ค.

โ–ฃ ์ถœ๋ ฅ์„ค๋ช…
์ฒซ์งธ ์ค„์— ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

โ–ฃ ์ž…๋ ฅ์˜ˆ์ œ
8 3 1 2 1 3 1 1 1 2

โ–ฃ ์ถœ๋ ฅ์˜ˆ์ œ
5

๐Ÿงž ํ’€์ด

๋”๋ณด๊ธฐ

ํ’€์ด (์‹œ๊ฐ„ ์ดˆ๊ณผ)

# ์ž…๋ ฅ: ์ฒซ์งธ ์ค„ - N, M, ๋‘˜์งธ ์ค„ - ์ˆ˜์—ด ๋‚˜์—ด
# ์ถœ๋ ฅ: ํ•ฉ์ด M์ด ๋˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜ ์ถœ๋ ฅ

n, m = map(int, input().split())        
list_n = list(map(int, input().split()))
a = 0

for i in range(n):
    for j in range(i+1, n+1):
        if sum(list_n[i:j]) == m:
            a += 1

print(a)

 

๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด

# ์—ฐ์†์ ์ธ ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ํ•ฉ์ด m๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ์ถœ๋ ฅ
# ํฌ์ธํ„ฐ ๊ฐ๊ฐ ํ• ๋‹น lt, rt

n, m = map(int, input().split())
a = list(map(int, input().split()))
lt = 0                              # ํฌ์ธํ„ฐ lt ํ• ๋‹น
rt = 1                              # ํฌ์ธํ„ฐ rt ํ• ๋‹น
tot = a[0]                          # tot ์ดˆ๊ธฐ๊ฐ’: a[0]
cnt = 0                             # ๊ฐœ์ˆ˜ ์„ธ๊ธฐ ์œ„ํ•œ cnt ํ• ๋‹น

while True:                         # break ๋˜๊ธฐ ์ „๊นŒ์ง€ ๋ฐ˜๋ณต
    if tot < m:                     # ํ•ฉ์ด m๋ณด๋‹ค ์ž‘์„ ๊ฒฝ์šฐ
        if rt < n:                  # rt๊ฐ€ n๋ณด๋‹ค ์ž‘์„ ๊ฒฝ์šฐ
            tot += a[rt]            # tot์— a[rt] ๊ฐ’ ๋”ํ•ด์คŒ
            rt += 1                 # rt ํฌ์ธํ„ฐ 1๋งŒํผ ์ฆ๊ฐ€
        else:                       # rt๊ฐ€ n๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด
            break                   # ๋ฐ˜๋ณต๋ฌธ ์ข…๋ฃŒ

    elif tot == m:                  # ๋งŒ์•ฝ ํ•ฉ์ด m๊ณผ ๊ฐ™์œผ๋ฉด
        cnt += 1                    # cnt 1 ์ฆ๊ฐ€
        tot -= a[lt]                # tot์—์„œ a[lt] ๊ฐ’ ๋นผ์คŒ
        lt += 1                     # lt 1 ์ฆ๊ฐ€

    else:                           # ๋งŒ์•ฝ ํ•ฉ์ด m๋ณด๋‹ค ํฌ๋ฉด
        tot -= a[lt]                # cnt ์ฆ๊ฐ€ ์—†์ด a[lt] ๊ฐ’ ๋นผ์คŒ
        lt += 1                     # lt 1 ์ฆ๊ฐ€

print(cnt)                          # cnt ์ถœ๋ ฅ

+ Recent posts