๊ฐ๋ฐ/๐ค ์๊ณ ๋ฆฌ์ฆ
[codeforce] D. Non-zero Segments
ttoance
2023. 5. 21. 19:19
๋ฌธ์ ์ถ์ฒ
https://codeforces.com/problemset/problem/1426/D
ํ์ด
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์ธ๊ฒ์ ๊ตฌํ๊ณ ์ ํ์๋, ์ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ธ ๊ฒ ๊ฐ์๋ค.
chatgpt๋ ๊ทธ๋ ๋ค๊ณ ํ๋ค...
๋ฐ์ํ