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

곡지사항

인기 κΈ€

νƒœκ·Έ

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

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

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

Frontend-Deep-Dive

[BOJ] λ°±μ€€ 2468 μ•ˆμ „ μ˜μ—­ / BFS
Problem_Solving

[BOJ] λ°±μ€€ 2468 μ•ˆμ „ μ˜μ—­ / BFS

2021. 1. 13. 19:03

이미지λ₯Ό ν΄λ¦­ν•˜λ©΄ 문제 μ‚¬μ΄νŠΈλ‘œ μ΄λ™ν•©λ‹ˆλ‹€.

 

 

πŸ’­ 문제 이해

2차원 배열에 각 μ›μ†ŒλŠ” κ·Έ μ§€μ—­μ˜ 높이λ₯Ό λ‹΄κ³  μžˆλ‹€.

λ¬Ό 높이가 증가함에 따라 일뢀 지역은 잠기게 되고, μž κΈ°μ§€ μ•Šμ€ μ—°μ†λœ 지역을 μ•ˆμ „μ˜μ—­μ΄λΌ ν•œλ‹€.

λ¬Ό λ†’μ΄μ˜ 변화에 따라 μ•ˆμ „μ˜μ—­μ˜ κ°œμˆ˜λ„ λ³€ν•˜κ²Œ λ˜λŠ”λ°, 이 μ•ˆμ „μ˜μ—­ 개수의 μ΅œλŒ€κ°’μ„ κ΅¬ν•˜λŠ” λ¬Έμ œμ΄λ‹€.

 

2차원 λ°°μ—΄μ˜ μ΅œλŒ€ ν¬κΈ°λŠ” 100*100으둜 μ „μˆ˜μ‘°μ‚¬λ₯Ό 해도 10000번 밖에 λ˜μ§€ μ•ŠλŠ”λ‹€.

 

1. ν˜„μž¬ 전체 μ˜μ—­μ˜ μ΅œμ†Œ 높이~μ΅œλŒ€ 높이 λ²”μœ„ λ‚΄μ—μ„œ 탐색을 μ‹œμž‘ν•œλ‹€.

2. 전체 μ˜μ—­μ—μ„œ (0, 0) μœ„μΉ˜λΆ€ν„° μΆœλ°œν•΄μ„œ ν˜„μž¬ λ¬Ό 높이 기쀀보닀 λ†’κ³ , λ°©λ¬Έν•œ 적 μ—†λŠ” 곳을 λ§Œλ‚˜λ©΄,

    κ±°κΈ°μ„œλΆ€ν„° λ„ˆλΉ„ μš°μ„  탐색을 μˆ˜ν–‰ν•˜λ©° 방문체크λ₯Ό ν•œλ‹€.

    그리고 ν˜„μž¬ λ¬Ό λ†’μ΄μ—μ„œμ˜ μ•ˆμ „μ˜μ—­ 개수λ₯Ό 1 μ¦κ°€μ‹œν‚¨λ‹€.

3. λͺ¨λ“  μ˜μ—­μ„ νƒμƒ‰ν–ˆμœΌλ©΄ ν˜„μž¬ λ¬Ό 높이 κΈ°μ€€ μ•ˆμ „μ˜μ—­ κ°œμˆ˜μ™€ μ§€κΈˆκΉŒμ§€μ˜ μ΅œλŒ€ μ•ˆμ „μ˜μ—­ 개수λ₯Ό λΉ„κ΅ν•΄μ„œ μ΅œλŒ€κ°’μœΌλ‘œ κ°±μ‹ ν•œλ‹€.

 

 

 

κ΅¬ν˜„ μ–Έμ–΄: Python

 

from collections import deque


def bfs(t_x, t_y, height):
    queue = deque()
    # 상 ν•˜ 쒌 우
    mx = [-1, 1, 0, 0]
    my = [0, 0, -1, 1]
    # μ‹œμž‘μ 
    visited[t_x][t_y] = True
    queue.append((t_x, t_y))

    while queue:
        x, y = queue.popleft()
        for k in range(4):
            nx = x + mx[k]
            ny = y + my[k]

            if 0 <= nx < n and 0 <= ny < n:
                if area[nx][ny] > height and not visited[nx][ny]:
                    visited[nx][ny] = True
                    queue.append((nx, ny))


n = int(input())
area = [list(map(int, input().split())) for _ in range(n)]
min_height = min(map(min, area))  # μ΅œμ†Œ 물높이
max_height = max(map(max, area))  # μ΅œλŒ€ 물높이
answer = 1

for h in range(min_height, max_height + 1):
    temp_cnt = 0
    visited = [[False] * n for _ in range(n)]  # 방문체크
    for i in range(n):
        for j in range(n):
            if area[i][j] > h and not visited[i][j]:
                bfs(i, j, h)
                temp_cnt += 1
    answer = max(answer, temp_cnt)

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

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

[BOJ] λ°±μ€€ 9205 λ§₯μ£Ό λ§ˆμ‹œλ©΄μ„œ κ±Έμ–΄κ°€κΈ° / BFS  (0) 2021.02.08
[BOJ] λ°±μ€€ 2573 λΉ™μ‚° / BFS  (0) 2021.01.14
[BOJ] λ°±μ€€ 5014 μŠ€νƒ€νŠΈλ§ν¬ / BFS  (0) 2021.01.13
[BOJ] λ°±μ€€ 13549 μˆ¨λ°”κΌ­μ§ˆ 3 / BFS  (0) 2021.01.12
[BOJ] λ°±μ€€ 13913 μˆ¨λ°”κΌ­μ§ˆ 4 / BFS  (0) 2021.01.12
    'Problem_Solving' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [BOJ] λ°±μ€€ 9205 λ§₯μ£Ό λ§ˆμ‹œλ©΄μ„œ κ±Έμ–΄κ°€κΈ° / BFS
    • [BOJ] λ°±μ€€ 2573 λΉ™μ‚° / BFS
    • [BOJ] λ°±μ€€ 5014 μŠ€νƒ€νŠΈλ§ν¬ / BFS
    • [BOJ] λ°±μ€€ 13549 μˆ¨λ°”κΌ­μ§ˆ 3 / BFS
    glowing713
    glowing713

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