DonHurry

[Python] ๋ฐฑ์ค€ 21921๋ฒˆ - ๋ธ”๋กœ๊ทธ ๋ณธ๋ฌธ

Problem Solving

[Python] ๋ฐฑ์ค€ 21921๋ฒˆ - ๋ธ”๋กœ๊ทธ

_๋„๋… 2022. 11. 14. 00:01

๐Ÿ“– ๋ฌธ์ œ

 

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

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

www.acmicpc.net

 

๐Ÿ”Ž ํ’€์ด

์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋จผ์ € ์ฃผ์–ด์ง„ ๊ธฐ๊ฐ„์ธ X ํฌ๊ธฐ์˜ ์œˆ๋„์šฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ ์œˆ๋„์šฐ๋ฅผ ํ•œ ์นธ์”ฉ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋ฉด์„œ ๊ฐ ์œˆ๋„์šฐ์˜ ํ•ฉ์„ ๊ณ„์‚ฐํ•ด์ค๋‹ˆ๋‹ค. ๋งค๋ฒˆ sum ํ•จ์ˆ˜๋กœ ๊ณ„์‚ฐ์‹œ ์‹œ๊ฐ„๋น„์šฉ์ด O(n)์ด๋ฏ€๋กœ, ์ด์ „ ํ•ฉ์—์„œ ๋งจ ์•ž์˜ ์›์†Œ๋ฅผ ๋นผ์ฃผ๊ณ , ์ƒˆ๋กœ ์ถ”๊ฐ€๋˜๋Š” ์›์†Œ๋ฅผ ๋”ํ•ด์ฃผ๋Š” ์‹์œผ๋กœ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. 

 

๐Ÿ’ป ์ฝ”๋“œ

N, X = map(int, input().split())
# ๋ฐฉ๋ฌธ์ž ์ˆ˜๋ฅผ ๋‹ด๋Š” ๋ฆฌ์ŠคํŠธ
visited = [int(x) for x in input().split()]
ans = []
# ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ
i, j = 0, X
# ํ˜„์‹œ์  ๋ฐฉ๋ฌธ์ž ์ˆ˜ ํ•ฉ๊ณ„
cur = sum(visited[:j])
ans.append(cur)

while j < N:
    # ๋ฐฉ๋ฌธ์ž ์ˆ˜ ๊ฐฑ์‹ 
    cur = cur - visited[i] + visited[j]
    # ๊ฐ ์œˆ๋„์šฐ์˜ ๋ฐฉ๋ฌธ์ž ํ•ฉ๊ณ„ ์ €์žฅ
    ans.append(cur)
    # ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ ์ด๋™
    i += 1
    j += 1

max_visited = max(ans)
if not max_visited:
    print("SAD")
else:
    print(max_visited)
    print(ans.count(max_visited))