๋ฐ์ํ
๐ฑ ๋ฌธ์
๐ฑ ํ์ด
0. ์ ๋ ฅ ๋ฐ๊ธฐ
n = int(input().rstrip())
num_list = list(map(int, input().split()))
์์ด์ ๊ธธ์ด์ ์์ด์ ์์ ๊ฐ๋ค์ ์ ๋ ฅ๋ฐ์ต๋๋ค.
1. ๋ณ์ ์ด๊ธฐํ
result = 0
start, end = 0, 0
seq = [False] * 1000001
- ํฌํฌ์ธํฐ๋ฅผ ์ด์ฉํด ํ๊ธฐ ์ํด
num_list
์ ์ธ๋ฑ์ค๋ฅผ ๊ฐ๋ฆฌํฌstart
์end
๋ฅผ ๊ฐ๊ฐ 0์ผ๋ก ์ด๊ธฐํ ํด์ค๋๋ค. seq
์ ์์ด์ ๋ค์ด๊ฐ ์ ์๋ ์ต๋๊ฐ์ธ 100000 ํฌ๊ธฐ์ ๋ฐฐ์ด์ ๋ง๋ค๊ณ , ์ซ์๊ฐ ์ค๋ณต๋์๋์ง ์ฒดํฌํฉ๋๋ค.
2. ํฌํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ
while start < n and end < n:
if not seq[num_list[end]]: # start๋ถํฐ end๊น์ง ์ค๋ณต ์ซ์ ์์ผ๋ฉด
seq[num_list[end]] = True
end += 1
result += (end - start) # end๋ฅผ ํฌํจํ์ฌ ๋ง๋ค ์ ์๋ ์์ด์ ๊ฐ์
else:
seq[num_list[start]] = False
start += 1
start
์end
๊ฐ ๋ชจ๋ ๋ง์ง๋ง ์์๋ฅผ ๊ฐ๋ฆฌํฌ ๋๊น์ง ๋ฐ๋ณตํฉ๋๋ค.- ๋ง์ฝ
end
๊ฐ ๊ฐ๋ฆฌํค๋ ์ซ์๊ฐ ์์ง๊น์ง ๋์ค์ง ์์๋ค๋ฉด,start
๋ถํฐend
๊น์งend
๋ฅผ ํฌํจํ๋ ์์ด์ ์กฐํฉ์ ๊ฐ์์ธend + 1 - start
๋ฅผresult
์ ๋ํ๊ณ ,end
๋ ์ ์ง์ํต๋๋ค.
์๋ฅผ ๋ค์ด,[1, 2, 3, 1, 2]
์์ด์์start
๊ฐ 0์ด๊ณ ,end
๊ฐ 2์ผ๋,end
๋ฅผ ํฌํจํ์ฌ ๋ง๋ค ์ ์๋ ์กฐํฉ์[3]
,[2, 3]
,[1, 2, 3]
์ผ๋ก 3๊ฐ(end
+ 1 -start
= 2 + 1- 0 = 3) ์ ๋๋ค.end
๋ฅผ ๋ฏธ๋ฆฌ ์ ์ง์์ผ๋์ผ๋ฉดresult
๋ฅผ ๊ณ์ฐํ ๋ +1์ ์๋ตํ ์ ์์ต๋๋ค. - ๋ง์ฝ
end
๊ฐ ๊ฐ๋ฆฌํค๋ ์๊ฐ ์ด๋ฏธ ๋์๋ค๋ฉด(์ค๋ณต๋์๋ค๋ฉด),start
๋ฅผ ์ ์ง์ํต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ฌ์start
๋ ์๋์จ ๊ฐ์ผ๋ก ์ทจ๊ธํด์ฃผ์ด์ผ ํ๋ฏ๋กseq
์์start
๊ฐ ๊ฐ๋ฆฌํค๋ ์๋ฅผFalse
์ฒ๋ฆฌํฉ๋๋ค.
๐ฑ ์ฝ๋
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# boj 13144 List of Unique Numbers
import sys
from collections import defaultdict
num_dict = defaultdict(list)
input = sys.stdin.readline
n = int(input().rstrip())
num_list = list(map(int, input().split()))
result = 0
start, end = 0, 0
seq = [False for _ in range(1000001)]
while start < n and end < n:
if not seq[num_list[end]]: # start๋ถํฐ end๊น์ง ์ค๋ณต ์ซ์ ์์ผ๋ฉด
seq[num_list[end]] = True
end += 1
result += (end - start) # end๋ฅผ ํฌํจํ์ฌ ๋ง๋ค ์ ์๋ ์์ด์ ๊ฐ์
else:
seq[num_list[start]] = False
start += 1
print(result)
๋ฐ์ํ
'Algorithm > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] #2252 ์ค ์ธ์ฐ๊ธฐ (Python) (0) | 2023.02.22 |
---|---|
[BOJ] #1976 ์ฌํ๊ฐ์(Python) (0) | 2023.02.21 |
[BOJ] #18405 ๊ฒฝ์์ ์ ์ผ (Python) (0) | 2023.02.15 |
[BOJ] #2230 ์ ๊ณ ๋ฅด๊ธฐ (Python) (0) | 2023.02.14 |
[BOJ] #9935 ๋ฌธ์์ด ํญ๋ฐ (Python) (0) | 2023.02.13 |
๋๊ธ