πAlgorithm/π₯Baekjoon
[Baekjoon] 3184_μ
λΏμΌ._.
2022. 6. 2. 11:37
λ¬Έμ (μΆμ²: https://www.acmicpc.net/problem/3184)
<μ>
λ¬Έμ
λ―Έν€μ λ·λ§λΉμλ νΉμ μμ μμ΄ μλ€. κ·Έκ° νΉ μ λ μ¬μ΄μ λ°°κ³ ν λλλ λ§λΉμ λ€μ΄μ μμ 곡격νλ€.
λ§λΉμ νκ³Ό μ΄λ‘ μ΄λ£¨μ΄μ§ μ§μ¬κ°ν λͺ¨μμ΄λ€. κΈμ '.' (μ )μ λΉ νλλ₯Ό μλ―Ένλ©°, κΈμ '#'λ μΈν리λ₯Ό, 'o'λ μ, 'v'λ λλλ₯Ό μλ―Ένλ€.
ν μΉΈμμ μν, μμ§λ§μΌλ‘ μ΄λνλ©° μΈν리λ₯Ό μ§λμ§ μκ³ λ€λ₯Έ μΉΈμΌλ‘ μ΄λν μ μλ€λ©΄, λ μΉΈμ κ°μ μμ μμ μν΄ μλ€κ³ νλ€. λ§λΉμμ "νμΆ"ν μ μλ μΉΈμ μ΄λ€ μμμλ μνμ§ μλλ€κ³ κ°μ£Όνλ€.
λ€νν μ°λ¦¬μ μμ λλμκ² μΈμμ κ±Έ μ μκ³ μμ μμ μμ μκ° λλμ μλ³΄λ€ λ§λ€λ©΄ μ΄κΈ°κ³ , λλλ₯Ό μ°λ¦¬μμ μ«μλΈλ€. κ·Έλ μ§ μλ€λ©΄ λλκ° κ·Έ μ§μ μμ λͺ¨λ μμ λ¨Ήλλ€.
맨 μ²μ λͺ¨λ μκ³Ό λλλ λ§λΉ μ μμμ μ‘΄μ¬νλ€.
μμΉ¨μ΄ λλ¬νμ λ μ΄μλ¨μ μκ³Ό λλμ μλ₯Ό μΆλ ₯νλ νλ‘κ·Έλ¨μ μμ±νλΌ.
μ λ ₯
첫 μ€μλ λ μ μ Rκ³Ό Cκ° μ£Όμ΄μ§λ©°(3 ≤ R, C ≤ 250), κ° μλ λ§λΉμ νκ³Ό μ΄μ μλ₯Ό μλ―Ένλ€.
λ€μ Rκ°μ μ€μ Cκ°μ κΈμλ₯Ό κ°μ§λ€. μ΄λ€μ λ§λΉμ ꡬ쑰(μΈν리, μ, λλμ μμΉ)λ₯Ό μλ―Ένλ€.
μΆλ ₯
νλμ μ€μ μμΉ¨κΉμ§ μ΄μμλ μκ³Ό λλμ μλ₯Ό μλ―Ένλ λ μ μλ₯Ό μΆλ ₯νλ€.
λ¬Έμ νμ΄
- my solution
import sys
from collections import deque
def survival(arr, visited, start, result):
queue=deque([start])
sheep=0;wolf=0
if arr[start[0]][start[1]]=='v': # λλ
wolf+=1
elif arr[start[0]][start[1]]=='o': # μ
sheep+=1
dx=[-1,1,0,0] # μνμ’μ°
dy=[0,0,-1,1]
while queue:
temp=queue.popleft()
for i in range(4):
x=temp[0]+dx[i]
y=temp[1]+dy[i]
if 0<=x<len(arr) and 0<=y<len(arr[0]) and visited[x][y]==0:
if arr[x][y]!="#":
queue.append([x,y])
visited[x][y]=1
if arr[x][y]=='v':
wolf+=1
elif arr[x][y]=='o':
sheep+=1
else:
visited[x][y]=1
if sheep>wolf:
result[0]+=sheep
else:
result[1]+=wolf
def main():
r,c=map(int, input().split()) # ν, μ΄
arr=[]
for i in range(r):
arr.append(list(sys.stdin.readline().strip()))
visited=[[0]*c for i in range(r)] # λ°©λ¬Έ μ¬λΆ
result=[0,0] # μ, λλ μ
for i in range(r):
for j in range(c):
if arr[i][j]!='#' and visited[i][j]==0: # μΈνλ¦¬κ° μλκ³ μμ§ λ°©λ¬Ένμ§ μμλ€λ©΄
visited[i][j]=1 # λ°©λ¬Έ
survival(arr, visited, [i,j], result)
print(str(result[0])+" "+ str(result[1]))
if __name__=='__main__':
main()
- survival ( arr, λ°©λ¬Έ μ¬λΆ, μμ μ’ν, κ²°κ³Ό )
: sheep, wolf = κ°μ μμμμ μ΄μλ¨μ μκ³Ό λλμ μ
: queueκ° λΉ λκΉμ§ λ°λ³΅ -> μ μΌ μ²μ κ°μ pop νμ¬ μνμ’μ°λ₯Ό νμ -> λ²μ μμ΄λ©° μμ§ λ°©λ¬Ένμ§ μμλ€λ©΄ -> μΈνλ¦¬κ° μλλΌλ©΄ queueμ μΆκ° λ° λ°©λ¬Έ, μμ΄λ λλμΈ κ²½μ° wolf, sheepμ +1 but μΈν리λΌλ©΄ λ°©λ¬Έλ§ νμ
: κ°μ μμ νμμ λλΈ ν μμ΄ λλλ³΄λ€ λ§λ€λ©΄ result [0]μ μμ μ λν΄μ£Όκ³ λλκ° λ§κ±°λ κ°λ€λ©΄ result [1]μ λλ μ λν΄μ€ - main
: ν r, μ΄ c μ λ ₯
: arr μ λ ₯
: visited = λ°©λ¬Έ μ¬λΆ
: result = [μ, λλ]
: arr μ 체λ₯Ό νμνμ¬ μΈνλ¦¬κ° μλκ³ μμ§ λ°©λ¬Ένμ§ μμλ€λ©΄ λ°©λ¬Έ ν ν¨μ νΈμΆ
: result μΆλ ₯
μκ°π€