๋ฐ์ํ
๋ฌธ์ ์ถ์ฒ
https://codeforces.com/problemset/problem/1426/D
Problem - 1426D - Codeforces
codeforces.com
ํ์ด
n = int(input())
nums = list(map(int, input().split()))
# print(nums)
acc_sum = [0] * 200001 # ๋์ ํฉ ์ํ ๊ณต๊ฐ
sub_acc_map = {}
sub_acc_map[0] = 'exists' # ํฉ์ด 0 ์ธ ๊ฒ์ ์ฐพ๊ธฐ ์ํด ์ด๊ธฐํ
result = 0
for i in range(n):
acc_sum[i] = nums[i];
if i > 0 :
acc_sum[i] = acc_sum[i] + acc_sum[i - 1]
if acc_sum[i] in sub_acc_map :
# if acc_sum[i] == 0:
print(i, ' : ' , acc_sum[i], ' - ', sub_acc_map)
result += 1;
sub_acc_map.clear()
sub_acc_map[acc_sum[i]] = 'exists'
sub_acc_map[acc_sum[i]] = 'exists'
print(result)
์๋ ์์์์, `acc_sum[i] in sub_acc_map :` ์ด ์กฐ๊ฑด์ ์กฐ๊ธ ๋ ์์ธํ ์ค๋ช ํ๋ฉด, ์ด๋ ๊ฒ ๋๋ค.
4
1 -5 3 2
i = 0 | i = 1 | i = 2 | i = 3 |
acc_sum = [1] suc_acc_map = { 0 : exists, 1 : exists } |
acc_sum = [1, -4] suc_acc_map = { 0 : exists, 1 : exists, -4 : exists, } |
acc_sum = [1, -4, -1] suc_acc_map = { 0 : exists, 1 : exists, -4 : exists, -1 : exists } |
acc_sum = [1, -4, -1, 1] suc_acc_map = { 1 : exists } |
์ด๋ ๊ฒ ์ ๊ทธ๋ฐ์ง ๋ญ๊ฐ ๋ด๊ฐ ์ดํด ๋ชปํ๋ ๊ฒ ์๋๊ฐ ์ถ์๋๋ฐ, ๊ทธ๋ฅ ๋ถ๋ถํฉ์ด 0์ธ๊ฒ์ ๊ตฌํ๊ณ ์ ํ์๋, ์ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ธ ๊ฒ ๊ฐ์๋ค.
๋ฌธ์ 2. ํฉ์ด 0์ธ ๋ถ๋ถ ๋ฐฐ์ด ์ค ๊ฐ์ฅ ๊ธด ๊ฒ์ ์ฐพ์๋ผ.
[[TIP(๋ฌธ์ ์ค๋ช )]] ์ฐธ์กฐ: [Largest subarray with 0 sum](https://practice.geeksforgeeks.org/problems/larg…
wikidocs.net
chatgpt๋ ๊ทธ๋ ๋ค๊ณ ํ๋ค...
๋ฐ์ํ
'๐ค ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๊ณ ๋ฆฌ์ฆ ๊ฟํ. ํ์ด์ฌ (0) | 2023.06.01 |
---|---|
baekjoon. ์์ด๋ฒ๋ฆฐ ๊ดํธ [Silver II] [python] (0) | 2023.05.22 |
baekjoon. ํธ๋ฆฌ ์ํ [Silver I] [python] (0) | 2023.03.25 |
baekjoon. ์นด๋2 [python] [Silver IV] (0) | 2023.03.23 |
baekjoon. ํฌ๊ฒ ๋ง๋ค๊ธฐ (2812) [python][Gold III] (0) | 2023.02.22 |