๐ค๋ฌธ์ ํด๊ฒฐ
1. S1 | ๊ทธ๋ํ ์ด๋ก , ๊ทธ๋ํ ํ์, BFS
2. ๋ฌผํต์ด 3๊ฐ์ง๋ง ๋ฌผ์ ์ด๋์ด ๊ณ ์ ์ด๊ธฐ ๋๋ฌธ์ a,b ๋ ๋ฌผํต๋ง ์ฒดํฌํ๋ฉด ๋๋ค. c๋ ์ ์ ๋ก ์ ํด์ง.
3. visited ๋ฆฌ์คํธ๋ฅผ 2์ค ๋ฆฌ์คํธ๋ก ์์ฑํ๋ค.( ๋ณ์๊ฐ 2๊ฐ์ด๊ธฐ ๋๋ฌธ )
4. ์ฒ์ 0,0์ ๋ฃ๊ณ BFS๋ฅผ ํ๋ค.
(1) a ๋ฌผํต์ด 0์ผ ๋ c ๋ฌผํต์ ์์ ๋ต๋ฆฌ์คํธ์ ๋ฃ์ด์ค๋ค.
(2) a -> b, a -> c, b -> a, b -> c, c -> a, c -> b 6๊ฐ์ง๋ฅผ ๋ชจ๋ ํ์ํ๋ค.
(3) ์กฐ๊ฑด์ ๋ง๋ค๋ฉด ๋ฌผ์ ๋๋๊ณ ๊ณ์ ํ์ํ๋ค.
5. ๋ต์ ์ถ๋ ฅ์กฐ๊ฑด์ ๋ง๊ฒ ์ถ๋ ฅํ๋ฉด ๋.
๐จ ๋ณ์๋ฅผ 2๊ฐ๋ง ์ ํด์ visited๋ฅผ 2์ค๋ฆฌ์คํธ๋ก ํ๋ ๊ฒ๊ณผ ๋ฌผ์ ์ฎ๊ธฐ๋ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด๋ณด์
๐ป์์ค ์ฝ๋
from collections import deque
def pour(x, y):
if not visited[x][y]:
visited[x][y] = 1
q.append((x, y))
def bfs():
q.append((0,0)) # ์ฒ์ ๋ฌผํต a,b๋ 0,0
visited[0][0] = 1
while q:
x, y = q.popleft()
z = c - x - y # z๋ a์b์ ์ํด ๊ฒฐ์ ๋๋ค.
if x == 0: # ์กฐ๊ฑด์์ a๋ฌผํต์ด 0์ผ๋ ์ด๋ฏ๋ก
answer.append(z)
# a์์ b ๋ฌผ์ ์ฎ๊ธฐ๋ ๊ฒฝ์ฐ
if x > 0 and y < b: # a์ ๋ฌผ์ด ์๊ณ b์ ๋ฌผ์ด ๊ฐ๋์ฐจ์์ง ์์ ๋
w = min(x, b - y)
pour(x - w, y + w)
# a์์ c
if x > 0 and z < c:
w = min(x, c - z)
pour(x - w, y)
# b์์ a
if y > 0 and x < a:
w = min(y, a - x)
pour(x + w, y - w)
# b์์ c
if y > 0 and z < c:
w = min(y, c - z)
pour(x, y - w)
# c์์ a
if z > 0 and x < a:
w = min(z, a - x)
pour(x + w, y)
# c์์ b
if z > 0 and y < b:
w = min(z, b - y)
pour(x, y + w)
if __name__ == "__main__":
a, b, c = map(int, input().split())
# visited: a ๋ฌผํต๊ณผ b ๋ฌผํต์ ์์ ๋ฐ๋ผ c ๋ฌผํต์ ์์ด ์ ํด์ง๊ธฐ ๋๋ฌธ์
# a,b ๋ ํต์ ์คํํ ์ ์ด ์๋์ง ํ์ธํ๋ 2์ค๋ฆฌ์คํธ
visited = [[0] * (b + 1) for _ in range(a + 1)]
# ๋ต์ ๋ฃ์ ๋ฐฐ์ด
answer = []
# BFS
q = deque()
bfs()
# ๋ต ์ถ๋ ฅ
answer.sort()
print(' '.join(list(map(str, answer))))
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: BACKJOON ONLINE JUDGE
๋งํฌ: https://www.acmicpc.net/problem/2251
๋ฌธ์
๊ฐ๊ฐ ๋ถํผ๊ฐ A, B, C(1≤A, B, C≤200) ๋ฆฌํฐ์ธ ์ธ ๊ฐ์ ๋ฌผํต์ด ์๋ค. ์ฒ์์๋ ์์ ๋ ๋ฌผํต์ ๋น์ด ์๊ณ , ์ธ ๋ฒ์งธ ๋ฌผํต์ ๊ฐ๋(C ๋ฆฌํฐ) ์ฐจ ์๋ค. ์ด์ ์ด๋ค ๋ฌผํต์ ๋ค์ด์๋ ๋ฌผ์ ๋ค๋ฅธ ๋ฌผํต์ผ๋ก ์์ ๋ถ์ ์ ์๋๋ฐ, ์ด๋์๋ ํ ๋ฌผํต์ด ๋น๊ฑฐ๋, ๋ค๋ฅธ ํ ๋ฌผํต์ด ๊ฐ๋ ์ฐฐ ๋๊น์ง ๋ฌผ์ ๋ถ์ ์ ์๋ค. ์ด ๊ณผ์ ์์ ์์ค๋๋ ๋ฌผ์ ์๋ค๊ณ ๊ฐ์ ํ๋ค.
์ด์ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์น๋ค๋ณด๋ฉด ์ธ ๋ฒ์งธ ๋ฌผํต(์ฉ๋์ด C์ธ)์ ๋ด๊ฒจ์๋ ๋ฌผ์ ์์ด ๋ณํ ์๋ ์๋ค. ์ฒซ ๋ฒ์งธ ๋ฌผํต(์ฉ๋์ด A์ธ)์ด ๋น์ด ์์ ๋, ์ธ ๋ฒ์งธ ๋ฌผํต(์ฉ๋์ด C์ธ)์ ๋ด๊ฒจ์์ ์ ์๋ ๋ฌผ์ ์์ ๋ชจ๋ ๊ตฌํด๋ด๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ธ ์ ์ A, B, C๊ฐ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ๋ต์ ์ถ๋ ฅํ๋ค. ๊ฐ ์ฉ๋์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ค.
'Algorithm Problem > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] ๋ฐฑ์ค - 1992. ์ฟผ๋ํธ๋ฆฌ (0) | 2020.08.27 |
---|---|
[python] ๋ฐฑ์ค - 7569. ํ ๋งํ (0) | 2020.08.26 |
[python] ๋ฐฑ์ค - 1495. ๊ธฐํ๋ฆฌ์คํธ (0) | 2020.08.24 |
[python] ๋ฐฑ์ค - 11660. ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 5 (0) | 2020.08.23 |
[html] ๊ณต๋ฐฑ ๋ฌธ์, ๋์ด์ฐ๊ธฐ (2) | 2020.08.22 |