๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๊ฑฐ๋ฆฌ๋‘๊ธฐ ํ™•์ธํ•˜๊ธฐ (level2, python)

๊ฐœ๋ฐœ์ž HOON 2023. 4. 11. 16:46

 

 

๐Ÿค” ํ’€์ด ์ฝ”๋“œ

 

from collections import deque

def bfs(start, place):
    queue = deque()
    queue.append([start[0], start[1], 0])
    visited = [[False for _ in range(5)] for _ in range(5)]
    visited[start[0]][start[1]] = True
    
    dx = [0, 0, -1, 1]
    dy = [1, -1, 0, 0]
    
    candidate = []
    
    while queue:
        a, b, dist = queue.popleft()
        
        for i in range(4):
            nx = dx[i] + a
            ny = dy[i] + b
            if 0 <= nx < 5 and 0 <= ny < 5 and not visited[nx][ny] and place[nx][ny] != "X":
                visited[nx][ny] = True
                queue.append([nx, ny, dist + 1])
                if place[nx][ny] == "P":
                    candidate.append(dist + 1)
    
    return True if candidate and min(candidate) <= 2 else False
                

def check_distance(place):
    for i in range(5):
        for j in range(5):
            if place[i][j] == "P":
                if bfs([i, j], place):
                    return 0
    return 1
                

def solution(places):
    answer = []
    for place in places:
        answer.append(check_distance(place))
    return answer

 

 

๐Ÿค” ๋ฌธ์ œ ํ’€์ด

 

์ „์ฒด 2์ฐจ์› ๋ฐฐ์—ด์˜ ๊ฐ€๋กœ ์„ธ๋กœ์˜ ๊ธธ์ด๊ฐ€ 5๋ฐ–์— ๋˜์ง€ ์•Š์œผ๋‹ˆ, ๋ชจ๋“  ์‚ฌ๋žŒ์— ๋Œ€ํ•ด์„œ ๋งจํ•ดํŠผ ๊ฑฐ๋ฆฌ๊ฐ€ 2 ์ดํ•˜์ธ ์ฃผ๋ณ€์‚ฌ๋žŒ์ด ์žˆ๋Š”์ง€ ๊ณ„์‚ฐํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์ฃผ๋ณ€์‚ฌ๋žŒ์˜ ๊ฑฐ๋ฆฌ๋Š” BFS๋กœ ํ’€์ดํ–ˆ์Šต๋‹ˆ๋‹ค.

์ƒํ•˜์ขŒ์šฐ ๋ฐฉํ–ฅ์œผ๋กœ ๋ฒ”์œ„๋ฅผ ์ดˆ๊ณผํ•˜์ง€ ์•Š๊ณ , ์•„์ง ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์ง€์—ญ์ด๋ฉฐ, ํ”Œ๋ ˆ์ดํŠธ๋กœ ๋ง‰ํžˆ์ง€ ์•Š์€ ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ๋ฐฉ๋ฌธ์„ ํ•˜๊ณ ,

"O"์ฒ˜๋Ÿผ ๋นˆ ํ…Œ์ด๋ธ”์ด๋ฉด ๊ทธ๋ƒฅ ์ง€๋‚˜๊ฐ€๊ณ , "P"๋กœ ์‚ฌ๋žŒ์„ ๋งŒ๋‚ฌ๋‹ค๋ฉด, ๊ฑฐ๋ฆฌ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

 

๋ชจ๋“  while๋ฌธ์ด ๋๋‚˜๋ฉด, candidate ๋ฐฐ์—ด์—๋Š” ์‹œ์ž‘ ์ง€์ ์œผ๋กœ๋ถ€ํ„ฐ ๋ชจ๋“  ์‚ฌ๋žŒ๊ณผ์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ์ €์žฅ๋˜์–ด์žˆ๊ณ , ์ด ์ค‘ ์ตœ์†Œ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ 2์ดํ•˜๋ผ๋ฉด ๊ฑฐ๋ฆฌ๋‘๊ธฐ๋ฅผ ์ง€ํ‚ค์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๋กœ์ง์„ ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.