21921 : ๋ธ”๋กœ๊ทธ

21921 : ๋ธ”๋กœ๊ทธ#

  • https://d2gd6pc034wcta.cloudfront.net/tier/8.svg ์‹ค๋ฒ„ 3

์‹œ๊ฐ„์ œํ•œ

๋ฉ”๋ชจ๋ฆฌ์ œํ•œ

์ •๋‹ต๋น„์œจ

1์ดˆ

512MB

40.744%

input : ์‹œ์ž‘ํ•œ์ง€ n์ผ,x์ผ / 1~n์ผ์ฐจ ๋ฐฉ๋ฌธ์ž์ˆ˜ split output : x์ผ ๋™์•ˆ ๋“ค์–ด์˜จ ์ตœ๋Œ€ ๋ฐฉ๋ฌธ์ž์ˆ˜ ์ถœ๋ ฅ. 0 = โ€œSADโ€ / ๊ธฐ๊ฐ„

x์ผ๋™์•ˆ ์ตœ๊ณ ๋ผ๋Š” ๊ฒƒ์€ x๊ธธ์ด๋งŒํผ ๋ฉ์–ด๋ฆฌ์˜ ๋ฐฉ๋ฌธ์ž์ˆ˜๊ฐ€ ์ œ์ผ ํฐ ๊ฒƒ์„ ๋งํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž„. ๊ทธ๋‹ˆ๊น ๋‹ค ์ž˜๋ผ์„œ ํ•ด์•ผํ•˜๋Š”์ง€? ๊ทผ๋ฐ 250000์ธ๋ฐ ์™„์ „ํƒ์ƒ‰์œผ๋กœ ํ•˜๋ฉด ์•ˆ๋  ๊ฒƒ์œผ๋กœ ๋ณด์ด๊ณ , ๊ทธ๋ฆฌ๋””๋กœ ํ•ด์•ผํ• ๋“ฏ. ๊ทผ๋ฐ ์™„์ „ํƒ์ƒ‰์ด ์ œ์ผ ๋งž๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š”๋ฐ

์‹œ๊ฐ„์ดˆ๊ณผ#

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

python#

import sys, os

problem_num = "21921"

path = os.getcwd() + f"\\txt\\{problem_num}" + ".txt"
sys.stdin = open(path, "r")
input = sys.stdin.readline
def find_max_visit(n, x, visitors):
    if max(visitors) == 0:
        print("SAD")
    else:
        cumulative_sum = [0] * (n + 1)

        for i in range(n):
            cumulative_sum[i + 1] = cumulative_sum[i] + visitors[i]

        max_visit = 0
        hash_table = {}

        for i in range(n - x + 1):
            subarray_sum = cumulative_sum[i + x] - cumulative_sum[i]

            if subarray_sum > max_visit:
                max_visit = subarray_sum
                hash_table[subarray_sum] = 1

            elif subarray_sum == max_visit:
                hash_table[subarray_sum] += 1

        print(max_visit)
        print(hash_table[max_visit])


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