| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- ๋ฐฑ์ค
- Python
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- DP
- ์๊ณ ๋ฆฌ์ฆ
- SWEA
- ์นด์นด์ค
- Backjoon
- SSAFY
- ์ฝํ
- algorithm
- boj
- ์์ ํ์
- javascript
- ์๋ฐ์คํฌ๋ฆฝํธ
- sort
- Blind
- ์ผ์ฑ
- ๊ทธ๋ํ
- DFS
- BFS
- ์คํ
- ์ธํผ
- SW์ญ๋ํ ์คํธ
- kakao
- ์๋ฃ๊ตฌ์กฐ
- ํ์ด์ฌ
- ํํ
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ฝ๋ฉํ ์คํธ
- Today
- Total
๋ง์ํ
[python] ๋ฐฑ์ค - 1743. ์์๋ฌผ ํผํ๊ธฐ ๋ณธ๋ฌธ
๐ค๋ฌธ์ ํด๊ฒฐ
S1 | BFS
์ด๋ฒ์๋ 2์ฐจ์๋ฆฌ์คํธ๋ฅผ ํ์ฉํ์ง ์๊ณ set()์ ํ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
๊ฐ๊ฐ์ ์ขํ๊ฐ ์ฃผ์ด์ ธ ์์ผ๋ฏ๋ก ์ฐ๋ ๊ธฐ๋ฅผ ํ๋ ์ ํํด ์ํ์ข์ฐ BFSํ์์ ํ๋ค.
์ฃผ๋ณ์ ์ฐ๋ ๊ธฐ๋ฅผ ์ ํํ ๋๋ง๋ค visited ์ add ํด์ค๋ค.
๋ count + 1 ์ ํด์ค์ ์ฐ๋ ๊ธฐ ๋๋ฏธ์ ํฌ๊ธฐ๋ฅผ answer ์ ๋ด๋๋ค.
๐จ set() ์ ์ฐ๋ ์ด์
if tmp in set() : ์ด๋ ๊ฒ tmp๊ฐ set()์ ์๋์ง ์๋์ง ํ์ธํ ๋ ์๊ฐ๋ณต์ก๋๊ฐ O(1) ์ด๋ค.
ํ์ง๋ง if tmp in list : list์ ๊ฒฝ์ฐ O(n) ์ด๋ค.
๐ป์์ค ์ฝ๋
import sys
from collections import deque
def bfs(x, y):
q = deque()
q.append((x, y))
cnt = 1 # ์์ํ ์ฐ๋ ๊ธฐ ํฌํจ
while q:
x, y = q.popleft()
for k in range(4):
nx = x + dx[k]
ny = y + dy[k]
if 1 <= nx < N + 1 and 1 <= ny < M + 1:
if (nx, ny) in trashSet and (nx, ny) not in visited:
cnt += 1
q.append((nx, ny))
visited.add((nx, ny))
else:
answer.append(cnt)
if __name__ == "__main__":
N, M, K = map(int, sys.stdin.readline().split())
# set() ์ ์ฐ๋ ์ด์
# if tmp in set(): ์ด๋ ๊ฒ tmp๊ฐ set()์ ์๋์ง ์๋์ง ํ์ธํ ๋ ์๊ฐ๋ณต์ก๋๊ฐ O(1)์ด๋ค.
# ํ์ง๋ง if tmp in list: list์ ๊ฒฝ์ฐ O(n)์ด๋ค.
trashSet = set() # ์์๋ฌผ ์
visited = set() # ๋ฐฉ๋ฌธ ์ฒดํฌ
for _ in range(K):
r, c = map(int, sys.stdin.readline().split())
trashSet.add((r, c))
answer = []
dx, dy = [-1, 1, 0, 0], [0, 0, -1, 1]
for trash in trashSet:
if (trash[0], trash[1]) not in visited: # ๋ฐฉ๋ฌธํ์ง ์์๋ฐ๋ฉด
visited.add((trash[0], trash[1])) # ๋ฐฉ๋ฌธ ์ถ๊ฐ
bfs(trash[0], trash[1]) # BFS GOGO!
print(max(answer))
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: BACKJOON ONLINE JUDGE
๋งํฌ: https://www.acmicpc.net/problem/1743
1743๋ฒ: ์์๋ฌผ ํผํ๊ธฐ
์ฒซ์งธ ์ค์ ํต๋ก์ ์ธ๋ก ๊ธธ์ด N(1 ≤ N ≤ 100)๊ณผ ๊ฐ๋ก ๊ธธ์ด M(1 ≤ M ≤ 100) ๊ทธ๋ฆฌ๊ณ ์์๋ฌผ ์ฐ๋ ๊ธฐ์ ๊ฐ์ K(1 ≤ K ≤ 10,000)์ด ์ฃผ์ด์ง๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ K๊ฐ์ ์ค์ ์์๋ฌผ์ด ๋จ์ด์ง ์ขํ (r, c)๊ฐ ์ฃผ์ด์ง๏ฟฝ
www.acmicpc.net
๋ฌธ์
์ฝ๋ ์ค์ฝ ์ฝ๋๋ฏธ๋์ 8์ธต์ ํ์๋ค์ด 3๋ผ์ ์์ฌ๋ฅผ ํด๊ฒฐํ๋ ๊ณต๊ฐ์ด๋ค. ๊ทธ๋ฌ๋ ๋ช๋ช ๋น์์ฌ์ ์ธ ํ์๋ค์ ๋งํ์ผ๋ก ์์๋ฌผ์ด ํต๋ก ์ค๊ฐ ์ค๊ฐ์ ๋จ์ด์ ธ ์๋ค. ์ด๋ฌํ ์์๋ฌผ๋ค์ ๊ทผ์ฒ์ ์๋ ๊ฒ๋ผ๋ฆฌ ๋ญ์น๊ฒ ๋ผ์ ํฐ ์์๋ฌผ ์ฐ๋ ๊ธฐ๊ฐ ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ์ถ์ ํ ์ ์๋์ ๊ฐ์ธ์ ์ผ๋ก ์ด๋ฌํ ์์๋ฌผ์ ์ค๋ดํ์ ๋ฌปํ๋ ๊ฒ์ ์ ๋ง ์ง์ ์ผ๋ก ์ซ์ดํ๋ค. ์ฐธ๊ณ ๋ก ์ฐ๋ฆฌ๊ฐ ๊ตฌํด์ผ ํ ๋ต์ ์ด ๋ฌธ์ ๋ฅผ ๋ธ ์กฐ๊ต๋ฅผ ๋ง์ถ๋ ๊ฒ์ด ์๋๋ค.
ํต๋ก์ ๋จ์ด์ง ์์๋ฌผ์ ํผํด๊ฐ๊ธฐ๋ ์ฌ์ด ์ผ์ด ์๋๋ค. ๋ฐ๋ผ์ ์ ์๋์ ๋จ์ด์ง ์์๋ฌผ ์ค์ ์ ์ผ ํฐ ์์๋ฌผ๋ง์ ํผํด ๊ฐ๋ ค๊ณ ํ๋ค.
์ ์๋์ ๋์ ์ ์ผ ํฐ ์์๋ฌผ์ ํฌ๊ธฐ๋ฅผ ๊ตฌํด์ “10ra"๋ฅผ ์ธ์น์ง ์๊ฒ ๋์์ฃผ์.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํต๋ก์ ์ธ๋ก ๊ธธ์ด N(1 ≤ N ≤ 100)๊ณผ ๊ฐ๋ก ๊ธธ์ด M(1 ≤ M ≤ 100) ๊ทธ๋ฆฌ๊ณ ์์๋ฌผ ์ฐ๋ ๊ธฐ์ ๊ฐ์ K(1 ≤ K ≤ 10,000)์ด ์ฃผ์ด์ง๋ค. ๊ทธ๋ฆฌ๊ณ ๋ค์ K๊ฐ์ ์ค์ ์์๋ฌผ์ด ๋จ์ด์ง ์ขํ (r, c)๊ฐ ์ฃผ์ด์ง๋ค.
์ขํ (r, c)์ r์ ์์์๋ถํฐ, c๋ ์ผ์ชฝ์์๋ถํฐ๊ฐ ๊ธฐ์ค์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์์๋ฌผ ์ค ๊ฐ์ฅ ํฐ ์์๋ฌผ์ ํฌ๊ธฐ๋ฅผ ์ถ๋ ฅํ๋ผ.
ํํธ
# . . .
. # # .
# # . .
์์ ๊ฐ์ด ์์๋ฌผ์ด ๋จ์ด์ ธ์๊ณ ์ ์ผํฐ ์์๋ฌผ์ ํฌ๊ธฐ๋ 4๊ฐ ๋๋ค. (์ธ์ ํ ๊ฒ์ ๋ถ์ด์ ํฌ๊ฒ ๋๋ค๊ณ ๋์ ์์. ๋๊ฐ์ ์ผ๋ก๋ ์์๋ฌผ ๋ผ๋ฆฌ ๋ถ์์ ์๊ณ ์ํ์ข์ฐ๋ก๋ง ๋ถ์์ ์๋ค.)
'Algorithm Problem > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [python] ๋ฐฑ์ค - 2343. ๊ธฐํ ๋ ์จ (5) | 2020.09.09 |
|---|---|
| [python] ๋ฐฑ์ค - 1926. ๊ทธ๋ฆผ (0) | 2020.09.08 |
| [python] ํ๋ก๊ทธ๋๋จธ์ค - ์ธ๋ฒฝ ์ ๊ฒ(2020 KAKAO BLIND RECRUITMENT) (0) | 2020.09.06 |
| [python] ๋ฐฑ์ค - 11052. ์นด๋ ๊ตฌ๋งคํ๊ธฐ / 16194. ์นด๋ ๊ตฌ๋งคํ๊ธฐ 2 (0) | 2020.09.05 |
| [python] ๋ฐฑ์ค - 1722. ์์ด์ ์์ (0) | 2020.09.04 |