-
[๋ฐฑ์ค] 17839 Baba is Rabbit with PythonPS 2022. 5. 13. 15:55728x90๋ฐ์ํ
๐ BOJ 17839 Baba is Rabbit
๐ก ์กฐ๊ฑด
N(1 โค N โค 100,000)
N๊ฐ์ ์ค์ ๊ฑธ์ณ ๋ช ๋ น์ด ์ฃผ์ด์ง๋ค.
๊ฐ ๋ช ๋ น์ p is q์ ํํ๋ก ์ฃผ์ด์ง๋ฉฐ, p์ q๋ ์ฒซ ๊ธ์๊ฐ ์๋ฌธ ๋๋ฌธ์์ด๊ณ , ๋๋จธ์ง ๊ธ์๋ ์๋ฌธ ์๋ฌธ์์ธ ๊ธธ์ด 10 ์ด๋ด์ ๋ฌธ์์ด์ด๋ค.Baba์ ๋ช ๋ น์ ํ ๋ฒ ์ด์ ์ ์ฉํ ๊ฒฐ๊ณผ๋ก ๋์ฌ ์ ์๋ ์ฌ๋ฌผ์ ์ฌ์ ์์ผ๋ก ์ถ๋ ฅํ๋ค.
๋จ, ์ ์ฉํ ์ ์๋ ๋ช ๋ น์ด ์๋ค๋ฉด, ์๋ฌด๊ฒ๋ ์ถ๋ ฅํ์ง ์๋๋ค.๊ทธ๋ํ ํ์, BFS ์ ํ์ ๋ฌธ์
๐ฅ ์์ค ์ฝ๋
from collections import deque from sys import stdin graph = {} for _ in range(int(stdin.readline())): a, b = stdin.readline().rstrip().split(' is ') if a not in graph: graph[a] = [b] else: graph[a].append(b) def solve(): q = deque() q.append("Baba") visited = {} while q: now = q.popleft() try: for i in graph[now]: if i not in visited: visited[i] = 1 q.append(i) except: pass return visited try: ans = sorted(solve()) print(*ans, sep='\n') except: pass
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์ 1
1 Rabbit is Carrot
์คํ๊ฒฐ๊ณผ 1
์์ 2
3 Rabbit is Carrot Baba is Cat Cat is Rabbit
์คํ๊ฒฐ๊ณผ 2
Carrot Cat Rabbit
โจ๏ธ ๋ฌธ์ ํ์ด
Baba์ ๋ช ๋ น์ ํ ๋ฒ ์ด์ ์ ์ฉํ ๊ฒฐ๊ณผ๋ก ๋์ฌ ์ ์๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฝ์์ผํ๋ ๋ฌธ์ ์ด๋ค.
๊ทธ๋ํ ํ์์ ํด์ผํ๋๋ฐ, ๋ฌธ์์ด๋ก ์ด๋ฃจ์ด์ง ๋ ธ๋๋ก ๊ตฌ์ฑ๋ ๊ทธ๋ํ๋ฅผ ๋ง๋ค์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋์ ๋๋ฆฌ ํ์ ์ ์ฌ์ฉํด ๊ทธ๋ํ๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค.
์ด๋ค ์ฌ๋ฌผ p์ ๋ช ๋ น์ ํ ๋ฒ ์ด์ ์ ์ฉํ ๊ฒฐ๊ณผ๋ก ๋ค์ p๊ฐ ๋์ค๋ ๊ฒฝ์ฐ๋ ์๋ค. ๋ผ๋ ์กฐ๊ฑด์ด ์๊ธฐ ๋๋ฌธ์ ๋จ๋ฐฉํฅ ๊ทธ๋ํ๋ฅผ ๋ง๋ค์ด์ฃผ๋ฉด ๋๋ค.๋ง๋ ๊ทธ๋ํ๋ฅผ BFS ๋ก ํ์ํ๋ฉด ๋๋๋ฐ, Baba ์ ๋ช ๋ น์ ํ ๋ฒ ์ด์ ํด์ผํ๊ธฐ ๋๋ฌธ์ ํ์๋ Baba๋ฅผ ๋ฃ์ด ํ์์ ์์ํ๋ค.
๋์ ๋๋ฆฌ์ ํด๋น ํค๊ฐ ์์ ์ ์๊ธฐ ๋๋ฌธ์ try - except ๋ฌธ์ ์ฌ์ฉํ์ฌ ์์ธ์ฒ๋ฆฌ๋ฅผ ํด์ค๋ค.
๐พ ๋ฐฐ์ด์
- ์ซ์๊ฐ ์๋ ๋ฌธ์์ด๋ก ์ด๋ฃจ์ด์ง ๊ทธ๋ํ๋ฅผ ๋ง๋ค๊ณ , ํ์ํ๋ ๋ฒ
๋ฐ์ํ'PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 18004 From A to B with Python (0) 2022.05.15 [๋ฐฑ์ค] 1951 ํ์ with Python (0) 2022.05.13 [๋ฐฑ์ค] 20125 ์ฟ ํค์ ์ ์ฒด ์ธก์ with Python (0) 2022.05.12 [๋ฐฑ์ค] 14562 ํ๊ถ์ with Python (0) 2022.05.12 [๋ฐฑ์ค] 16926 ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ 1 with Python (0) 2022.05.11