๐Ÿค–/๋ฐฑ์ค€

๋ฐฑ์ค€ 21921: ๋ธ”๋กœ๊ทธ (Python)

sssbin 2023. 6. 15. 17:07

 

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

 

21921๋ฒˆ: ๋ธ”๋กœ๊ทธ

์ฒซ์งธ ์ค„์— $X$์ผ ๋™์•ˆ ๊ฐ€์žฅ ๋งŽ์ด ๋“ค์–ด์˜จ ๋ฐฉ๋ฌธ์ž ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ์ตœ๋Œ€ ๋ฐฉ๋ฌธ์ž ์ˆ˜๊ฐ€ 0๋ช…์ด๋ผ๋ฉด SAD๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ์ตœ๋Œ€ ๋ฐฉ๋ฌธ์ž ์ˆ˜๊ฐ€ 0๋ช…์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋‘˜์งธ ์ค„์— ๊ธฐ๊ฐ„์ด ๋ช‡ ๊ฐœ ์žˆ๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค

www.acmicpc.net

 

ํˆฌ ํฌ์ธํ„ฐ ์ด์šฉ

n, x = map(int, input().split())
visitors = list(map(int, input().split()))

i = j = 0
temp = result = 0
cnt = 0

for i in range(n):
    # ๋ ํฌ์ธํ„ฐ ์ด๋™
    while j-i < x and j < n:
        temp += visitors[j]
        j += 1

    # x์ผ
    if j-i == x:
        if result < temp:
            result = temp
            cnt = 1
        elif result == temp:
            cnt += 1

    # ์‹œ์ž‘ ํฌ์ธํ„ฐ ๊ฐ’ ๋นผ์ฃผ๊ธฐ
    temp -= visitors[i]

if result == 0:
    print("SAD")
else:
    print(result)
    print(cnt)

 

๋‹ค ํ’€๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ•ด๋ณด๋‹ค๊ฐ€

์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•ด๋ณด์•˜๋‹ค.

 

์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ๋ž€?

๊ณ ์ • ์‚ฌ์ด์ฆˆ์˜ ์œˆ๋„์šฐ๊ฐ€ ์ด๋™ํ•˜๋ฉด์„œ ์œˆ๋„์šฐ ๋‚ด์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•ด ๋ฌธ์ œ๋ฅผ ํ’€์ดํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

 

n, x = map(int, input().split())
visitors = list(map(int, input().split()))

# ์ดˆ๊ธฐ๊ฐ’
result = temp = sum(visitors[:x])
cnt = 1

for i in range(x, n):
    temp += visitors[i] - visitors[i-x] # ๋ˆ„์ ํ•ฉ ๊ณ„์‚ฐ

    if result < temp:
        result = temp
        cnt = 1
    elif result == temp:
        cnt += 1

if result == 0:
    print("SAD")
else:
    print(result)
    print(cnt)

 

 

ํˆฌ ํฌ์ธํ„ฐ ์ด์šฉํ–ˆ์„ ๋•Œ

์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ ์ด์šฉํ–ˆ์„ ๋•Œ