์šฐ๊ทœ์ด์ธ์šฐ์œค
Eager To Learn ๐ŸŒŒ
์šฐ๊ทœ์ด์ธ์šฐ์œค
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿก ํ™ˆ
  • ๐Ÿš€ ๊นƒํ—ˆ๋ธŒ
  • โ›… ํƒœ๊ทธ ํด๋ผ์šฐ๋“œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (217)
    • ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm ๊ธฐ๋ฒ• (1)
      • ๋ฐ”ํ‚น๋… (21)
    • ๋ธ”๋กœ๊ทธ ์ด์‚ฌ (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • ์ž๋ฃŒ๊ตฌ์กฐ (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • ๊ฐœ๋ฐœ์„œ์  (15)
      • ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ (1)
      • ์˜ค๋ธŒ์ ํŠธ - ์กฐ์˜ํ˜ธ (7)
      • ์นœ์ ˆํ•œ SQL ํŠœ๋‹ (7)
    • ํšŒ๊ณ  (2)
hELLO ยท Designed By ์ •์ƒ์šฐ.
์šฐ๊ทœ์ด์ธ์šฐ์œค

Eager To Learn ๐ŸŒŒ

๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/PYTHON

[ํŒŒ์ด์ฌ PYTHON] ๋ฐฑ์ค€ 16236๋ฒˆ ใ€์•„๊ธฐ ์ƒ์–ดใ€‘

2023. 3. 9. 10:53


import sys
import copy
from collections import deque

# ์˜ˆ์ œ ์ž…๋ ฅ
N = int(input())
_map = [[0]*N for _ in range(N)]
checked = [[False]*N for _ in range(N)]
queue = deque([])


for i in range(N):
    info = list(map(int,sys.stdin.readline().split()))
    for j in range(N):
        _map[i][j]=info[j]
        if info[j] == 9:
            _map[i][j] = 0
            shark = [i,j,0]
            queue.append(shark)


# bfs()๋กœ ๋จน์„ ์ˆ˜ ์žˆ๋Š” ๋จน์ด ํƒ์ƒ‰ํ•˜๊ธฐ

dr = [1,-1,0,0]
dc = [0,0,1,-1]

fish = []
def bfs(sharkSize):
    copiedMap = copy.deepcopy(_map)
    copiedCheck = copy.deepcopy(checked)
    while len(queue) !=0:
        r,c,t = map(int,queue.popleft())
        for i in range(4):
            nr = r + dr[i]
            nc = c + dc[i]
            nt = t + 1
            if 0<=nr<N and 0<=nc<N and copiedMap[nr][nc]<=sharkSize and not copiedCheck[nr][nc]:

                queue.append([nr,nc,nt])
                copiedCheck[nr][nc]=True

                if 0< copiedMap[nr][nc] <sharkSize:
                    fish.append([nr,nc,nt])
    if fish:
        fish.sort(key = lambda x : (x[2],x[0],x[1]))
        return fish[0]
    else:
        return None

sharkSize = 2
food = 0
ans = 0
while True:
    fish.clear()
    result = bfs(sharkSize)
    if result:
        r,c,t = map(int,result)
        food +=1
        if sharkSize == food:
            sharkSize+=1
            food = 0
        _map[r][c]=0
        queue.append([r,c,0])
        ans+=t
    else:
        break
print(ans)

์•ฝ 2์‹œ๊ฐ„์— ๊ฑธ์ณ์„œ ํ˜ผ์ž ํ•ด๊ฒฐํ•œ ๋ฌธ์ œ!

 

๋ฌธ์ œ ์ ‘๊ทผ ๋ฐฉ๋ฒ•

1. bfs()๋กœ ์ƒ์–ด๊ฐ€ ๋จน์„ ์ˆ˜ ์žˆ๋Š” ๋จน์ด์˜ ์œ„์น˜์™€ ๊ทธ ์œ„์น˜์— ๋„๋‹ฌํ•œ ์‹œ๊ฐ„์„ ๋ชจ๋‘ ๊ธฐ๋ก (fish stack์— ์ž…๋ ฅ)

2. ๋จน์ด ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ, ์ž…๋ ฅ๋œ ๋จน์ด(fish)๋ฅผ ์‹œ๊ฐ„์ˆœ์œผ๋กœ(=๊ฑฐ๋ฆฌ) ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ, ํ–‰์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ, ์—ด์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ ํ›„ ์ฒซ๋ฒˆ์งธ์— ์œ„์น˜ํ•œ ๋จน์ด๋ฅผ return ํ•œ๋‹ค.

 

๋งŒ์•ฝ, ๋จน์ด๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด None ์„ return ํ•œ๋‹ค.

 

3. bfs() ์ดํ›„ ์ •์ƒ์ ์œผ๋กœ ๋ฐ˜ํ™˜์ด ๋˜์—ˆ๋‹ค๋ฉด, ๋จน์€ ๋ฌผ๊ณ ๊ธฐ ์–‘์„ ๊ธฐ๋กํ•˜๊ณ  ๋ฌผ๊ณ ๊ธฐ ์–‘์— ๋”ฐ๋ผ ์ƒ์–ด ํฌ๊ธฐ๋„ ๋ณ€๊ฒฝํ•œ๋‹ค.

๋จน์ด๋ฅผ ๋จน์€ ์œ„์น˜๊ฐ€ ์ƒ์–ด ์œ„์น˜๊ฐ€ ๋˜๋ฏ€๋กœ queue ์— ์ถ”๊ฐ€ํ•˜๊ณ  bfs()๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•œ๋‹ค.

 

๐Ÿ’ก ์ฃผ์˜์ . bfs()๋ฅผ ํ•˜๊ธฐ ์ „์— fish ์Šคํƒ์„ ๋น„์›Œ์ค€๋‹ค.

 

 

 

    '๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/PYTHON' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [ํŒŒ์ด์ฌ PYTHON] ๋ฐฑ์ค€ 2146๋ฒˆ ใ€๋‹ค๋ฆฌ ๋งŒ๋“ค๊ธฐใ€‘
    • [ํŒŒ์ด์ฌ PYTHON] ๋ฐฑ์ค€ 2638๋ฒˆ ใ€์น˜์ฆˆใ€‘
    • [ํŒŒ์ด์ฌ PYTHON] ๋ฐฑ์ค€ 14502๋ฒˆ ใ€์—ฐ๊ตฌ์†Œใ€‘
    • [ํŒŒ์ด์ฌ PYTHON] ๋ฐฑ์ค€ 15686๋ฒˆ ใ€์น˜ํ‚จ ๋ฐฐ๋‹ฌใ€‘
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ๊ฐœ๋ฐœ์ž ๊ฟˆ๋‚˜๋ฌด

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”