๐Ÿ‘ฉโ€๐ŸŽ“๊ณต๋ถ€ - 2024.01.01 ์˜ค๋Š˜์˜ ๋ฐฑ์ค€ ๋ฌธ์ œํ’€์ด

์œ ๋ น๊ฐœยท2024๋…„ 1์›” 2์ผ
0

PS-์•Œ๊ณ ๋ฆฌ์ฆ˜2

๋ชฉ๋ก ๋ณด๊ธฐ
7/34
post-thumbnail

2589๋ฒˆ - ๋ณด๋ฌผ์„ฌ

W๋Š” ๋ฐ”๋‹ค, L์€ ๋Œ€๋ฅ™์ž…๋‹ˆ๋‹ค.
๋Œ€๋ฅ™์˜ ๋๊ณผ ๋์— (๋‘˜ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๊ฐ€ ์ œ๋ฐ€ ๋จผ ๊ณณ์—) ๊ฐ๊ฐ ๋ณด๋ฌผ์ด ๋ฌปํ˜€์žˆ๋Š”๋ฐ ์ด ๋‘˜ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ ์ค‘ ์ œ์ผ ๊ธด ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.


์„ธํŒ…

from collections import deque
import sys
import copy
input = sys.stdin.readline

์ œ๊ฐ€ ์“ธ ๋ฐฉ์‹์€ ์ธ๋ฑ์Šค ํ•˜๋‚˜ํ•˜๋‚˜ ๋‹ค BFS๋ฅผ ๋Œ๋ฆฌ๊ณ  deep copy ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ• ๊บผ๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ด ๋งŽ์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. python์—์„œ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ• ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์ฃ ? sysinput์ด๋ž‘ pypy3๋กœ ์ปดํŒŒ์ผ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

dx = [-1,1,0,0]
dy = [0,0,1,-1]

BFS ํ•ญ์ƒ ์‚ฌ์šฉํ•  ๋•Œ์ฒ˜๋Ÿผ ์ƒํ•˜์ขŒ์šฐ ์„ค์ •์„ ํ•ด์ค๋‹ˆ๋‹ค.

N,M = map(int,input().split())
map = []
que = deque()
for _ in range(N):
    map.append(list(input()))
map_copy = copy.deepcopy(map)
ans = []

๋ณด๋ฌผ์ง€๋„์˜ ์ž…๋ ฅ์„ ๋ฐ›์•„์ค์‹œ๋‹ค. map์ด๋ผ๋Š” ๋ณ€์ˆ˜ ์•ˆ์— ๋ฐ›์•„์ฃผ๊ณ  BFS๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ๋‹ค ๋Œ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ map์„ ๋ณต์ œํ•œ map_copy๋ผ๋Š” ๋ณ€์ˆ˜๋„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

for i in range(N):
    for j in range(M):
        ans.append(bfs(i,j))
        map = copy.deepcopy(map_copy)

์•„๊นŒ ๋ง์”€๋“œ๋ฆฐ๋Œ€๋กœ ๊ฐ ์ธ๋ฑ์Šค๋งˆ๋‹ค bfs๋ฅผ ๋Œ๋ฆฌ๊ณ  map_copy๋กœ ๋ณต์ œํ•œ๊ฑธ ๋‹ค์‹œ map ์•ˆ์— ๋„ฃ์–ด์„œ ์ดˆ๊ธฐํ™” ํ•˜๋Š” ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


BFS

def bfs(x,y):
    max = 0
    boolean = False
    que.append([x,y])

๋ณด๋ฌผ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ์ˆ˜๋ฅผ ๋‹ด์„ max ํ•จ์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  boolean์€ ๋ฐ˜๋ก€ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด์„œ ์„ค์ •ํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

    if map[x][y] == 'L':
        map[x][y] = 1

์ž๊ธฐ์ž์‹ ์ด ๋•…์ด๋ผ๋ฉด 1๋กœ ์„ค์ •ํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

    while que:
        x,y = que.popleft()
        for i in range(4):
            nx = dx[i] + x
            ny = dy[i] + y
            if nx<0 or ny<0 or nx>=N or ny>=M:
                continue 
            if map[nx][ny] == 'L' and map[x][y] != 'W':
                boolean = True
                map[nx][ny] = map[x][y] + 1
                if max < map[nx][ny]:
                    max = map[nx][ny]
                que.append([nx,ny])

์ƒํ•˜์ขŒ์šฐ ํƒ์ƒ‰์„ ๋Œ์•„์„œ ๋‹ค์Œ ๊ฒƒ์ด ๋•…์ด๋ผ๋ฉด ์ž๊ธฐ์ž์‹  + 1์„ ๊ธฐ์ž…ํ•ด ๊ฑฐ๊ธฐ๊นŒ์ง€ ๊ฐ€๋Š” ๋ฐ์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์ธ๋ฑ์Šค์— ๋Œ€์ž…ํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.
๋งŒ์•ฝ ์ž๊ธฐ์ž์‹ +1์ด ์—ฌํƒœ ๋‚˜์˜จ ๊ฐ€๋Š”๋ฐ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ ์ค‘ ๊ฐ€์žฅ ํฌ๋‹ค๋ฉด ๊ทธ๊ฒŒ ๊ณง ๋ณด๋ฌผ๊ณผ ๋ณด๋ฌผ ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์— max์— ๋„ฃ๊ณ 

    if boolean == True:
        return max
    else:
        return 1

์ด๋ ‡๊ฒŒ ์ถ”๊ฐ€์‹œ์ผœ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.


print(max(ans)-1)

๋งˆ์ง€๋ง‰์œผ๋กœ BFS๋กœ ๋Œ๋ฆฐ ๋ณด๋ฌผ๊ณผ ๋ณด๋ฌผ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ ํ›„๋ณด๋“ค ์ค‘ ํ˜„์žฌ ์œ„์น˜๋ฅผ ์ œ์™ธํ•œ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.


๋ฐ˜๋ก€

์•„๊นŒ boolean ๊ฐ’์„ ์„ค์ •ํ•ด์„œ ๋ฐ˜๋ก€ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค€๋‹ค๊ณ  ์–ธ๊ธ‰ํ–ˆ์—ˆ์ฃ ? ์ œ๊ฐ€ ํ–‡๊ฐˆ๋ ธ๋˜ ๋‘ ๊ฐ€์ง€ ๋ฐ˜๋ก€๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

1 2
WL

๋จผ์ € ์ด๋Ÿฐ์”ฉ์œผ๋กœ ์ž‘์„ฑ์ด ๋˜์–ด์žˆ๋‹ค๋ฉด ํƒ์ƒ‰์„ ์•„์˜ˆ ์•ˆ๋Œ๊ธฐ ๋•Œ๋ฌธ์— max์˜ ์ดˆ๊ธฐ๊ฐ’ 0์—์„œ -1์ด ๋น ์ ธ๋ฒ„๋ฆฐ -1๊ฐ’์ด ๋„์ถœ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
ํ•ด๋‹น ๊ฐ’์„ 0์œผ๋กœ ๋„์ถœํ•˜๊ธฐ ์œ„ํ•ด์„œ ํƒ์ƒ‰์„ ์•„์˜ˆ ์•ˆ๋Œ์•˜๋‹ค๋ฉด 1๋กœ return ํ•˜์—ฌ 0์ด ์ถœ๋ ฅ๋˜๊ฒŒ ์œ ๋„ํ•ฉ์‹œ๋‹ค.

7 7
WLLLLLW
LWLWLWW
LLLWLWW
LWWWLWW
LLLLLWW
LWWWWWW
WWWWWWW

์ฒ˜์Œ์— ์ƒ๊ฐํ–ˆ๋˜ ์ฝ”๋“œ๋Š” ์–ด๋–ค ์”ฉ์ด์—ˆ๋ƒ๋ฉด

for i in range(M):
    ans.append(bfs(N-1,i))

์œ„์™€๊ฐ™์ด ์–ด? ๋งจ ์•„๋ž˜๋งŒ ํƒ์ƒ‰์„ ๋Œ์•„๋„ ๋ณด๋ฌผ๋ผ๋ฆฌ์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๊ฐ’์ด ๋„์ถœ๋˜๋Š”๊ฑฐ ์•„๋‹Œ๊ฐ€? ํ–ˆ๋Š”๋ฐ
์œ„ ๋ฐ˜๋ก€๋ฅผ ๋ณด๋ฉด ๋ฌด์ž‘์ • ์•„๋ž˜๋งŒ ๋ณธ๋‹ค๊ณ  ํ•ด์„œ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๊ฐ’์ด ๋‚˜์˜ค์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

ํ•œ ๊ฐ€์ง€ ๋” ์˜๋ฌธ์ด ๋“  ๊ฒƒ์€ ์ œ๊ฐ€ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„๋ฅผ ์œ„ํ•ด PS๋ฅผ ํ‘ธ๋Š”๊ฒŒ ์ฃผ๋œ ๋ชฉ์ ์ธ๋ฐ ๊ธฐ์—…์—์„œ pypy3๋ฅผ ์ปดํŒŒ์ผ๋Ÿฌ๋กœ ์ œ๊ณตํ•ด์ฃผ์ง€๋Š” ์•Š์„ ๊ฒƒ ๊ฐ™๊ณ  ์ œ ์‹ค๋ ฅ์—์„œ python3๋กœ ์‚ฌ์‹ค์ƒ ์‹œ๊ฐ„์ดˆ๊ณผ ๋•Œ๋ฌธ์— ํ’€๊ธฐ ํž˜๋“  ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ด๊ฑธ pypy3๋กœ๋งŒ ๋งˆ๋ƒฅ ํ•ด๊ฒฐํ•ด๋„ ๊ดœ์ฐฎ์„๊นŒ? ํ–ˆ๋Š”๋ฐ

PyPy3๋กœ ์ œ์ถœํ•˜๋ฉด ํ†ต๊ณผ๋ฉ๋‹ˆ๋‹ค.

๋ผ๋Š” ๊ฒŒ์‹œ๊ธ€์„ ๋ณด๊ณ  ์•ˆ์‹ฌํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. pypy3๋กœ ํ†ต๊ณผ๋  ๋งŒํ•œ ๋ฌธ์ œ๋ฅผ python3๋กœ ๋ชปํ’€์—ˆ๋‹ค๊ณ  ๊ธฐ์—…์—์„œ ๊ฑฐ๋ฅผ ์ •๋„์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„ ๋ฌธ์ œ๋ฅผ ๋‚ผ ๊ฐ€๋Šฅ์„ฑ์€ ๊ฑฐ์˜ ์—†๋‹ค๊ณ  ๋ด์•ผํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.




profile
ํ•œ๋ฆผ๋Œ€ํ•™๊ต ์ •๋ณด๊ณผํ•™๋Œ€ 2ํ•™๋…„ ์žฌํ•™์ค‘ / ์œก๊ตฐ ์ •๋ณด๋ณดํ˜ธ๋ณ‘ 22-2๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€