๐ ์๊ณ ๋ฆฌ์ฆ
์ด ๋ฌธ์ ๋ ์์ ํ์ ๋ฐฉ์์ผ๋ก ํ๋ฉด ์ ์ ๊ฐ์๊ฐ 1000 ๊ฐ์ผ ๋, 1000 * 1000 * 1000 = 10^9๋ก ์๊ฐ ์ด๊ณผ๋ฅผ ํ๊ฒ ๋๋ค.
๋ฐ๋ผ์ ์ธ ์ ์ ๊ฑฐ๋ฆฌ๊ฐ ๋์ผํ ์ผ์ด์ค๋ฅผ ๋ชจ๋ ๊ณ์ฐํ๋ ๋ฐฉ๋ฒ์ด ์๋, ๋์ผํ ๊ฐ๊ฒฉ์ด ์กด์ฌํ๋ ์ ์ ์ฐพ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํํ๋๋ก ํ๋ค.
์์ง์ ์์ ์์์ ์ธ ์ a,b,c๊ฐ ์์ ๋ ์ C๋ b์์ a์ b์ ๊ฑฐ๋ฆฌ๋งํผ ๋ํ ๊ฐ์ด๋ค.
์ด ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉํ์ฌ ์ C๋ฅผ ์ฐพ๊ณ , ์ด ๊ฐ์ด ์ ๋ ฅ๋ฐ์ list์ ์กด์ฌํ๋ค๋ฉด ์ธ ์ ์ ๋์ผํ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ์ง ์ ๋ค์ด๋ค.
๐ป ์ต์ข ์ฝ๋
from collections import defaultdict
t = int(input())
for _ in range(t):
n = int(input())
dots = sorted(list(map(int, input().split()))) # ์ ์
๋ ฅ ๋ฐ๊ณ sort
spot = defaultdict(int)
for i in range(n):
# ์ ์ ์์น๋ฅผ key ๊ฐ์ผ๋ก ์กด์ฌํ๋ฉด 1 (True)
spot[dots[i]] = 1
print(spot)
ans = 0
for i in range(n-1):
for j in range(i+1, n):
# ์ธ๋ฒ์งธ ์ ์ ์ฒซ๋ฒ์งธ ์ ๊ณผ ๋๋ฒ์งธ ์ ๊ฑฐ๋ฆฌ๊ฐ๊ณผ ๋์ผ
third = dots[j] + (dots[j] - dots[i])
if spot[third] == 1:
ans += 1
print(ans)
์ ์ ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์ธํ๊ธฐ ์ํด defaultdict๋ฅผ ์ฌ์ฉํ๋ค. defaultdict๋ dictionary์ ์๋ธ ํด๋์ค๋ก key๊ฐ ๋ํ ๋ํดํธ๋ก ์๋ฃํ์ ์ ์ธํ ์ ์๋ค.
for๋ฌธ์ ๋ฒ์๋ ์ฒซ๋ฒ์งธ ๊ฐ์ผ๋ก๋ถํฐ ๋๋ฒ์งธ ๊ฐ๊น์ง์ ๊ฑฐ๋ฆฌ๋ฅผ ๋ชจ๋ ๊ณ์ฐํด์ฃผ๊ธฐ ์ํด ์์ ๊ฐ์ด ์ค์ ํ๋ค.
์ด ๊ฐ์ด defaultdict์ ์กด์ฌํ๋ฉด ๊ฐ์๋ฅผ ์ธ์ด์ค๋ค.
ํฅํฅ ์ด๋ ต๋ค
'PS > BOJ&Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/1181] ๋จ์ด ์ ๋ ฌ (ํ์ด์ฌ) (0) | 2023.01.18 |
---|---|
[๋ฐฑ์ค/14592] 2017 ์์ฃผ๋ํ๊ต ํ๋ก๊ทธ๋๋ฐ ๊ฒฝ์๋ํ(small) - ํ์ด์ฌ (2) | 2023.01.18 |
[๋ฐฑ์ค/12759] ํฑ! ํ! ํ ! - ํ์ด์ฌ (1) | 2023.01.17 |
[๋ฐฑ์ค/1100] ํ์ ์นธ/ํ์ด์ฌ 2์ฐจ์ ๋ฆฌ์คํธ/์ฒด์คํ - ํ์ด์ฌ (0) | 2023.01.16 |
[๋ฐฑ์ค/11652] ์นด๋ - ํ์ด์ฌ (0) | 2023.01.14 |