glowing713
Frontend-Deep-Dive
glowing713
전체 방문자
였늘
μ–΄μ œ
  • λΆ„λ₯˜ 전체보기 (97)
    • Languages (11)
      • JavaScript πŸ’› (3)
      • Python 🐍 (4)
      • Java β˜•οΈ (3)
      • Swift 🧑 (1)
    • Computer_Science (1)
      • Computer_Network πŸ•Έ (1)
    • Web_Frontend (4)
      • Vue.js (1)
    • Problem_Solving (76)
    • Server (1)
      • Spring πŸ€ (1)
    • AI (2)
      • NLP πŸ—£ (1)
      • AI_Math βž— (1)
    • κ°œλ°œν™˜κ²½ κΎΈλ―ΈκΈ° ✌ (1)
    • 생각정리 ✍🏻 (1)

λΈ”λ‘œκ·Έ 메뉴

  • πŸ§‘πŸ»β€πŸ’»Github

곡지사항

인기 κΈ€

νƒœκ·Έ

  • ps
  • DP
  • boostcampaitech
  • 이뢄탐색
  • 카카였 기좜
  • c++
  • Python
  • mst
  • Java
  • bfs
  • brute-force
  • ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€
  • BOJ
  • binary search
  • Algorithm
  • 2019 카카였 개발자 겨울 인턴십
  • Baekjoon
  • Stack
  • 완전탐색
  • λ™μ κ³„νšλ²•

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
glowing713

Frontend-Deep-Dive

[BOJ] λ°±μ€€ 7576 ν† λ§ˆν†  / λ„ˆλΉ„ μš°μ„  탐색(BFS)
Problem_Solving

[BOJ] λ°±μ€€ 7576 ν† λ§ˆν†  / λ„ˆλΉ„ μš°μ„  탐색(BFS)

2020. 8. 31. 11:50


 

 

πŸ’£ λ¬Έμ œ 이해

 

 

보관 ν›„ ν•˜λ£¨κ°€ μ§€λ‚˜λ©΄, 읡은 ν† λ§ˆν† λ“€μ˜ μΈμ ‘ν•œ 곳에 μžˆλŠ” 읡지 μ•Šμ€ ν† λ§ˆν† λ“€μ€ 읡은 ν† λ§ˆν† μ˜ 영ν–₯을 λ°›μ•„ 읡게 λœλ‹€.

ν•˜λ‚˜μ˜ ν† λ§ˆν† μ˜ μΈμ ‘ν•œ 곳은 μ™Όμͺ½, 였λ₯Έμͺ½, μ•ž, λ’€ λ„€ λ°©ν–₯에 μžˆλŠ” ν† λ§ˆν† λ₯Ό μ˜λ―Έν•œλ‹€.

며칠이 μ§€λ‚˜λ©΄ ν† λ§ˆν† λ“€μ΄ λͺ¨λ‘ μ΅λŠ”μ§€, κ·Έ μ΅œμ†Œ 일수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•œλ‹€.

 

λ„ˆλΉ„ μš°μ„  탐색(BFS) κΈ°λ²•μœΌλ‘œ ν’€μ΄ν–ˆλ‹€.

 

 

πŸ’­ 풀이 κ³Όμ •

 

 

 

μž‘μ„± μ–Έμ–΄: Python

from collections import deque


def bfs(t_m, t_n, t_box):
    day = -1
    mx = [-1, 1, 0, 0]
    my = [0, 0, -1, 1]

    while riped_index:
    	# ν•˜λ£¨ μ”© 증가
        day += 1
        queue_size = len(riped_index)
        for _ in range(queue_size):
            x, y = riped_index.popleft()

            for k in range(4):
                nx = x + mx[k]
                ny = y + my[k]
                # λ„€ λ°©ν–₯에 μœ„μΉ˜ν•œ ν† λ§ˆν† λ“€μ΄ μƒμž λ²”μœ„ 내에 있고, μ•ˆ 읡은 ν† λ§ˆν† μΈμ§€ 체크
                if 0 <= nx < t_n and 0 <= ny < t_m and t_box[nx][ny] == 0:
                    t_box[nx][ny] = 1
                    riped_index.append([nx, ny])

    # μ—¬μ „νžˆ μ•ˆ 읡은 ν† λ§ˆν† κ°€ λ‚¨μ•„μžˆμœΌλ©΄ -1을 좜λ ₯, μ•„λ‹ˆλ©΄ μ΅œμ†Œ λ‚ μ§œ 좜λ ₯
    answer = sum(temp.count(0) for temp in t_box)
    return -1 if answer != 0 else day


m, n = map(int, sys.stdin.readline().split())
box = []
riped_index = deque()

# μž…λ ₯ 데이터 2차원 배열을 μ½μ–΄μ˜€λ©΄μ„œ,
# 맨 처음 읡은 ν† λ§ˆν† λ₯Ό μ°Ύμ•„μ„œ μœ„μΉ˜λ₯Ό riped_index 데크에 μ €μž₯(큐λ₯Ό λŒ€μ²΄)
for i in range(n):
    row = list(map(int, sys.stdin.readline().split()))
    for j in range(m):
        if row[j] == 1:
            riped_index.append([i, j])
    box.append(row)

print(bfs(m, n, box))

 

 

 

 

πŸ† 배운 점

 

 

BFS κ°œλ…μ΄ μ μš©λ˜λŠ” 것을 μ§κ΄€μ μœΌλ‘œ 잘 λ³Ό 수 μžˆλŠ” λ¬Έμ œμ˜€λ˜ 것 κ°™λ‹€.

 

μ—­μ‹œ 파이썬으둜 κ΅¬ν˜„ν•˜λ‹ˆ λ”μš± 어렀움을 덜 수 μžˆμ—ˆλ‹€. πŸ‘ πŸ‘ πŸ‘

μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)

'Problem_Solving' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[BOJ] λ°±μ€€ 2606 λ°”μ΄λŸ¬μŠ€ / λ„ˆλΉ„ μš°μ„  탐색(BFS)  (0) 2020.11.05
[2020 KAKAO BLIND RECRUITMENT] λ¬Έμžμ—΄ μ••μΆ•  (0) 2020.09.01
[2018 KAKAO BLIND RECRUITMENT] λ‹€νŠΈ κ²Œμž„  (0) 2020.08.29
[2019 KAKAO BLIND RECRUITMENT] μ‹€νŒ¨μœ¨  (0) 2020.08.29
[2018 KAKAO BLIND RECRUITMENT] 비밀지도  (0) 2020.08.28
    'Problem_Solving' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [BOJ] λ°±μ€€ 2606 λ°”μ΄λŸ¬μŠ€ / λ„ˆλΉ„ μš°μ„  탐색(BFS)
    • [2020 KAKAO BLIND RECRUITMENT] λ¬Έμžμ—΄ μ••μΆ•
    • [2018 KAKAO BLIND RECRUITMENT] λ‹€νŠΈ κ²Œμž„
    • [2019 KAKAO BLIND RECRUITMENT] μ‹€νŒ¨μœ¨
    glowing713
    glowing713

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”