2021. 9. 1. 21:55ใ๐ฑ Algorithm
๐น ์ฝ๋
from collections import deque
def solution(n, m, images):
directions = [(1, 0), (0, 1), (-1, 0), (0, -1)]
answer = 0
for r in range(n):
for c in range(m):
if images[r][c] == -1:
continue # continue ์ pass
color = images[r][c]
queue = deque([(r, c)])
while queue:
y, x = queue.popleft()
for ny, nx in directions:
py = ny + y
px = nx + x
if (0 <= py < n) and (0 <= px < m) and (images[py][px] == color):
images[py][px] = -1
queue.append((py, px))
answer += 1
return answer
๐ ๊ณ ์ฐฐ๊ณผ ์ํ์ฐฉ์ค
images[py][px] = -1 ๋ก ๊ธฐ์ค ๋
ธ๋๊ฐ ์๋ ์ฃผ๋ณ๋
ธ๋๋ฅผ -1 ๋ก ๋ฐ๊พธ๋๋ฐ, color ๋ ์ฃผ๋ณ ๋
ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ํด์ง ๊ฒ์ด ์๋ ์ต์ด ๊ธฐ์ค ๋
ธ๋๋ก ๋ฏธ๋ฆฌ ์ ํด์ ธ์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋์ ์ฃผ๋ณ ๋
ธ๋๋ฅผ -1 ๋ก ๋ฐ๊พธ๋ ๊ฒ์ ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ค.
answer += 1 ์ ์ ์ธํ๋ ์์น๋ฅผ ์๋ชป์ก์๋๋ฐ, if ๋ฌธ ๋ด๋ถ์์ ํด๋น ๋ก์ง์ด ์ํ๋ผ์ผ ํ๋ค๊ณ ์๊ฐํ๋ค.
ํ์ง๋ง ๋ฌธ์ ์์ ์ํ๋ ๋ต์ ๊ฐ์ ์นผ๋ผ๊ฐ ์์ ๋๋ง๋ค answer ๋ฅผ +1 ํ๋ ๊ฒ์ด ์๋, ํ๋์ ๊ทธ๋ฃน์ด ์๊ธธ ๋๋ง๋ค + 1์ ํ๋ ๊ฒ์ด๋ผ ํ๋ค. ๋ ์ฃผ๋ณ์ ๊ฐ์ color๊ฐ ํ๋๋ ์๋๋ผ๋ queue ๋ฅผ ๋ค ์ํํ๊ณ ๋๋ฉด ์์ ๋
ธ๋์ ์๊น์ + 1 ํด์ผํ๋ค.
๐ pass ์ continue
continue ๋ ๋ฃจํ ๋ด์์ ์ฒ๋ฆฌํ ๋ก์ง์ด ์๋์ ๋ ๋จ์์์ง๋ง, ์ด๋ฅผ ๊ฑด๋๋ฐ๊ณ ๋ค์ ๋ฃจํ๋ฅผ ์ํํ๋ค.
์ฆ, ๊ฐ์ scope ์์ continue ๊ฐ ๋จผ์ ๋์จ ํ์๋ ์ฒ๋ฆฌํด์ผํ ๋ก์ง์ด ์๋ค๋ฉด, continue ์ดํ ๋ก์ง์ ์์ฐ์ค๋ ์คํต๋๋ค.
pass๋ ์คํํ ์ฝ๋๊ฐ ์๋ ๊ฒ์ผ๋ก ๋ค์ ํ๋์ ๊ณ์ ์งํ๋๋ค.
์ด๋ฐ ๊ด์ ์์ ๋ณด๋ฉด pass ๋ ๋ณ๋ค๋ฅธ ์ํฅ์ ๋ผ์ง์น ์๊ธฐ์ ์ฉ๋๋ฅผ ์ ๋ชจ๋ฅผ ์ ์์ง๋ง, ์์ธ๋ ์๋ฌ๊ฐ ๋ฐ์ํ์ ๋, pass ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฌ๊ฐ ์๊ธฐ๋๋ผ๋ ๊ณ์ ์ฝ๋๋ฅผ ์งํ์ํฌ ์ ์๋ค.
์ฃผ๋ก try ~ except ๋ฌธ์ except ๋ด์์ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
'๐ฑ Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 14225 ๋ถ๋ถ์์ด์ ํฉ ํ์ด์ฌ (0) | 2023.02.25 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ๋ชจ์์ฌ์ ํ์ด์ฌ (0) | 2021.10.07 |
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ์ฟผ๋์์ถ ํ ๊ฐ์ ์ธ๊ธฐ ํ์ด์ฌ (0) | 2021.08.31 |
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ๋ฐฉ๋ฌธ๊ธธ์ด ํ์ด์ฌ (0) | 2021.08.29 |
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ๋ฉ๋ด ๋ฆฌ๋ด์ผ ํ์ด์ฌ (0) | 2021.08.29 |