ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
๋์ ๊ฐ์๊ฐ ๋ค๋ฅธ ์ธ ๊ฐ์ ๊ทธ๋ฃน A, B, C๊ฐ ์ฃผ์ด ์ง ๋ ์ธ ๊ฐ์ ๊ทธ๋ฃน ์ค 2๊ฐ๋ฅผ ์ ํํ ํ, ๋์ ๊ฐ์๊ฐ ์์ ์ชฝ์ X, ํฐ ์ชฝ์ Y๋ผ๊ณ ํ๋ค. ์ด๋, X์ ์๋ ๋์ ๊ฐ์๋ฅผ X + X๋ก Y์ ์๋ ๋์ ๊ฐ์๋ฅผ Y - X๊ฐ๋ก ๋ง๋ ๋ค. ์ด์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์งํํ์ฌ A, B, C์ ๋์ ๊ฐ์๊ฐ ๊ฐ์์ง๋์ง ์ฌ๋ถ๋ฅผ ๋ฐํํ๋ ๋ฌธ์ ์ด๋ค.
- ๊ทธ๋ฃน์ ๋์ ๊ฐ์ ํฉ์ด 3์ผ๋ก ๋๋์ด์ง๋ ๊ฒฝ์ฐ, ๋์ ๊ฐ์๊ฐ ๊ฐ์ ์ง ์ ์๋ค.
-
A, B, C 3๊ฐ์ ๊ทธ๋ฃน ์ค 2๊ฐ๋ฅผ ์ ํํ์ฌ 2๊ฐ์ ํฌ๊ธฐ๋ฅผ ๋น๊ตํ์ฌ ๋ฌธ์ ์กฐ๊ฑด๊ณผ ๊ฐ์ด ์ฒ๋ฆฌํ๋ค.
- ๋์ ๋๋ฆฌ๋ฅผ ํ์ฉํ์ฌ, ๋์ผํ ์กฐ๊ฑด์ ์ฌํ์ํ์ง ์๋๋ก ํ๋ค.
์ฝ๋
from sys import stdin
from collections import deque, defaultdict
def bfs():
q = deque([stones])
check[tuple(stones)] = True
while q:
a, b, c = q.popleft()
if a == b == c:
return 1
for x, y in ((a, b), (a, c), (b, c)):
if x == y:
continue
elif x < y:
y -= x
x += x
elif x > y:
x -= y
y += y
z = sum_stone - x - y
if not check[(x, y, z)]:
check[(x, y, z)] = True
q.append([x, y, z])
return 0
if __name__ == '__main__':
stones = list(map(int, stdin.readline().split()))
sum_stone = sum(stones)
check = defaultdict(bool)
print(0) if sum_stone % 3 else print(bfs())
defaultdict๋ฅผ ์ด์ฉํ์ฌ x, y, z๋ฅผ ํค๋ก ์ฌ์ฉํ์ฌ ๊ฒฝ์ฐ์ ์์ ๋ํ ํ์ธ์ ์งํํ์๋ค. ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๋, ์คํ ์ด๊ณผ๊ฐ ๋ฐ์ํ์ง ์์๋ค.๐
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 1654 ๋์ ์๋ฅด๊ธฐ (0) | 2020.08.22 |
---|---|
๋ฐฑ์ค: 2251 ๋ฌผํต (0) | 2020.08.21 |
๋ฐฑ์ค: 1339 ๋จ์ด ์ํ (0) | 2020.08.20 |
๋ฐฑ์ค: 1107 ๋ฆฌ๋ชจ์ปจ (0) | 2020.08.19 |
๋ฐฑ์ค: 1062 ๊ฐ๋ฅด์นจ (0) | 2020.08.18 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ