J1Yun
ZU-TECHLOG
J1Yun
전체 방문자
였늘
μ–΄μ œ
  • πŸ“‘ Category (135)
    • Algorithm (61)
      • πŸ“š Concept (6)
      • πŸ“˜ Baekjoon Judge (53)
      • πŸ“— Programmers (2)
    • Computer Science (42)
      • πŸ”’ Operating System (14)
      • πŸ“‘ Network (15)
      • πŸ’Ύ Database (8)
      • 🧩 Design Pattern (4)
      • πŸ”‘ Security (1)
    • Activities (12)
      • 🦁 λ©‹μŸμ΄μ‚¬μžμ²˜λŸΌ 9κΈ° (6)
      • πŸ’» SWλ§ˆμ—μŠ€νŠΈλ‘œ 13κΈ° (6)
    • Infra (1)
      • ☁️ AWS (1)
    • Languages (1)
      • πŸ’™ Python (1)
    • Backend (7)
      • πŸ”΅ Django (4)
      • 🟒 Node.js (3)
    • Ect. (8)
      • πŸ’¬ Talk (0)
      • πŸ—‚οΈ 개발직ꡰ μ·¨μ—… μ€€λΉ„μžλ£Œ (8)

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • νƒœκ·Έ
  • λ°©λͺ…둝

곡지사항

인기 κΈ€

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

250x250
hELLO Β· Designed By μ •μƒμš°.
J1Yun

ZU-TECHLOG

[BOJ] λ°±μ€€ 2468번 μ•ˆμ „ μ˜μ—­ - 파이썬(Python)
Algorithm/πŸ“˜ Baekjoon Judge

[BOJ] λ°±μ€€ 2468번 μ•ˆμ „ μ˜μ—­ - 파이썬(Python)

728x90

문제

μž¬λ‚œλ°©μž¬μ²­μ—μ„œλŠ” λ§Žμ€ λΉ„κ°€ λ‚΄λ¦¬λŠ” μž₯λ§ˆμ² μ— λŒ€λΉ„ν•΄μ„œ λ‹€μŒκ³Ό 같은 일을 κ³„νšν•˜κ³  μžˆλ‹€. λ¨Όμ € μ–΄λ–€ μ§€μ—­μ˜ 높이 정보λ₯Ό νŒŒμ•…ν•œλ‹€. κ·Έ λ‹€μŒμ— κ·Έ 지역에 λ§Žμ€ λΉ„κ°€ 내렸을 λ•Œ 물에 μž κΈ°μ§€ μ•ŠλŠ” μ•ˆμ „ν•œ μ˜μ—­μ΄ μ΅œλŒ€λ‘œ λͺ‡ κ°œκ°€ λ§Œλ“€μ–΄ μ§€λŠ” μ§€λ₯Ό μ‘°μ‚¬ν•˜λ €κ³  ν•œλ‹€. μ΄λ•Œ, 문제λ₯Ό κ°„λ‹¨ν•˜κ²Œ ν•˜κΈ° μœ„ν•˜μ—¬, μž₯λ§ˆμ² μ— λ‚΄λ¦¬λŠ” λΉ„μ˜ 양에 따라 μΌμ •ν•œ 높이 μ΄ν•˜μ˜ λͺ¨λ“  지점은 물에 μž κΈ΄λ‹€κ³  κ°€μ •ν•œλ‹€.

μ–΄λ–€ μ§€μ—­μ˜ 높이 μ •λ³΄λŠ” ν–‰κ³Ό μ—΄μ˜ 크기가 각각 N인 2차원 λ°°μ—΄ ν˜•νƒœλ‘œ μ£Όμ–΄μ§€λ©° λ°°μ—΄μ˜ 각 μ›μ†ŒλŠ” ν•΄λ‹Ή μ§€μ μ˜ 높이λ₯Ό ν‘œμ‹œν•˜λŠ” μžμ—°μˆ˜μ΄λ‹€. 예λ₯Ό λ“€μ–΄, λ‹€μŒμ€ N=5인 μ§€μ—­μ˜ 높이 정보이닀.

이제 μœ„μ™€ 같은 지역에 λ§Žμ€ λΉ„κ°€ λ‚΄λ €μ„œ 높이가 4 μ΄ν•˜μΈ λͺ¨λ“  지점이 물에 μž κ²Όλ‹€κ³  ν•˜μž. 이 κ²½μš°μ— 물에 μž κΈ°λŠ” 지점을 νšŒμƒ‰μœΌλ‘œ ν‘œμ‹œν•˜λ©΄ λ‹€μŒκ³Ό κ°™λ‹€. 

λ˜ν•œ μœ„μ™€ 같은 μ§€μ—­μ—μ„œ 높이가 6μ΄ν•˜μΈ 지점을 λͺ¨λ‘ 잠기게 λ§Œλ“œλŠ” λ§Žμ€ λΉ„κ°€ 내리면 물에 μž κΈ°μ§€ μ•ŠλŠ” μ•ˆμ „ν•œ μ˜μ—­μ€ μ•„λž˜ κ·Έλ¦Όμ—μ„œμ™€ 같이 λ„€ κ°œκ°€ 됨을 확인할 수 μžˆλ‹€. 물에 μž κΈ°μ§€ μ•ŠλŠ” μ•ˆμ „ν•œ μ˜μ—­μ΄λΌ 함은 물에 μž κΈ°μ§€ μ•ŠλŠ” 지점듀이 μœ„, μ•„λž˜, 였λ₯Έμͺ½ ν˜Ήμ€ μ™Όμͺ½μœΌλ‘œ 인접해 있으며 κ·Έ 크기가 μ΅œλŒ€μΈ μ˜μ—­μ„ λ§ν•œλ‹€. μœ„μ˜ κ²½μš°μ—μ„œ 물에 μž κΈ°μ§€ μ•ŠλŠ” μ•ˆμ „ν•œ μ˜μ—­μ€ 5κ°œκ°€ λœλ‹€(κΌ­μ§“μ μœΌλ‘œλ§Œ λΆ™μ–΄ μžˆλŠ” 두 지점은 μΈμ ‘ν•˜μ§€ μ•ŠλŠ”λ‹€κ³  μ·¨κΈ‰ν•œλ‹€). 

이와 같이 μž₯λ§ˆμ² μ— λ‚΄λ¦¬λŠ” λΉ„μ˜ 양에 λ”°λΌμ„œ 물에 μž κΈ°μ§€ μ•ŠλŠ” μ•ˆμ „ν•œ μ˜μ—­μ˜ κ°œμˆ˜λŠ” λ‹€λ₯΄κ²Œ λœλ‹€. μœ„μ˜ μ˜ˆμ™€ 같은 μ§€μ—­μ—μ„œ λ‚΄λ¦¬λŠ” λΉ„μ˜ 양에 λ”°λ₯Έ λͺ¨λ“  경우λ₯Ό λ‹€ 쑰사해 보면 물에 μž κΈ°μ§€ μ•ŠλŠ” μ•ˆμ „ν•œ μ˜μ—­μ˜ 개수 μ€‘μ—μ„œ μ΅œλŒ€μΈ κ²½μš°λŠ” 5μž„μ„ μ•Œ 수 μžˆλ‹€. 

μ–΄λ–€ μ§€μ—­μ˜ 높이 정보가 μ£Όμ–΄μ‘Œμ„ λ•Œ, μž₯λ§ˆμ² μ— 물에 μž κΈ°μ§€ μ•ŠλŠ” μ•ˆμ „ν•œ μ˜μ—­μ˜ μ΅œλŒ€ 개수λ₯Ό κ³„μ‚°ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. 

μž…λ ₯

첫째 μ€„μ—λŠ” μ–΄λ–€ 지역을 λ‚˜νƒ€λ‚΄λŠ” 2차원 λ°°μ—΄μ˜ ν–‰κ³Ό μ—΄μ˜ 개수λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 수 N이 μž…λ ₯λœλ‹€. N은 2 이상 100 μ΄ν•˜μ˜ μ •μˆ˜μ΄λ‹€. λ‘˜μ§Έ 쀄뢀터 N개의 각 μ€„μ—λŠ” 2차원 λ°°μ—΄μ˜ 첫 번째 ν–‰λΆ€ν„° N번째 ν–‰κΉŒμ§€ μˆœμ„œλŒ€λ‘œ ν•œ ν–‰μ”© 높이 정보가 μž…λ ₯λœλ‹€. 각 μ€„μ—λŠ” 각 ν–‰μ˜ 첫 번째 μ—΄λΆ€ν„° N번째 μ—΄κΉŒμ§€ N개의 높이 정보λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μžμ—°μˆ˜κ°€ 빈 칸을 사이에 두고 μž…λ ₯λœλ‹€. λ†’μ΄λŠ” 1이상 100 μ΄ν•˜μ˜ μ •μˆ˜μ΄λ‹€.

좜λ ₯

첫째 쀄에 μž₯λ§ˆμ² μ— 물에 μž κΈ°μ§€ μ•ŠλŠ” μ•ˆμ „ν•œ μ˜μ—­μ˜ μ΅œλŒ€ 개수λ₯Ό 좜λ ₯ν•œλ‹€.

 

https://www.acmicpc.net/problem/2468

 

2468번: μ•ˆμ „ μ˜μ—­

μž¬λ‚œλ°©μž¬μ²­μ—μ„œλŠ” λ§Žμ€ λΉ„κ°€ λ‚΄λ¦¬λŠ” μž₯λ§ˆμ² μ— λŒ€λΉ„ν•΄μ„œ λ‹€μŒκ³Ό 같은 일을 κ³„νšν•˜κ³  μžˆλ‹€. λ¨Όμ € μ–΄λ–€ μ§€μ—­μ˜ 높이 정보λ₯Ό νŒŒμ•…ν•œλ‹€. κ·Έ λ‹€μŒμ— κ·Έ 지역에 λ§Žμ€ λΉ„κ°€ 내렸을 λ•Œ 물에 μž κΈ°μ§€ μ•ŠλŠ”

www.acmicpc.net

 

πŸ’‘ 풀이 및 μ½”λ“œ

from collections import deque

n = int(input())
graph = []
max_height = 0
for _ in range(n):
    graph.append(list(map(int, input().split())))
    max_height = max(max_height, max(graph[-1]))
    
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
    
def bfs(x, y, r):
    queue = deque()
    queue.append((x, y))
    visited[x][y] = 1
    
    while queue:
        x, y = queue.popleft()
        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            if nx<0 or nx>=n or ny<0 or ny>=n:
                continue
            if visited[nx][ny] == 1 or graph[nx][ny] <= r:
                continue
            queue.append((nx, ny))
            visited[nx][ny] = 1

result = 0
for i in range(max_height):
    count = 0
    visited = [[0]*n for _ in range(n)]
    for j in range(n):
        for k in range(n):
            if graph[j][k] > i and visited[j][k] == 0:
                bfs(j, k, i)
                count += 1
    result = max(result, count)
    
print(result)

 

0λΆ€ν„° μž…λ ₯받은 수 쀑 κ°€μž₯ 큰 수 -1 κΉŒμ§€ κ°•μˆ˜λŸ‰κΉŒμ§€λ„ BFS ν•¨μˆ˜μ˜ 인자둜 μ£Όμ–΄ 이 값보닀 μ§€μ—­μ˜ 높이가 큰 경우만 νƒμƒ‰ν•˜λ„λ‘ κ΅¬ν˜„ν–ˆλ‹€. 

728x90

'Algorithm > πŸ“˜ Baekjoon Judge' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[BOJ] λ°±μ€€ 2470번 두 μš©μ•‘ - 파이썬(Python)  (0) 2021.08.24
[BOJ] λ°±μ€€ 10026번 적둝색약 - 파이썬(Python)  (0) 2021.07.25
[BOJ] λ°±μ€€ 2583번 μ˜μ—­ κ΅¬ν•˜κΈ° - 파이썬(Python)  (0) 2021.07.17
[BOJ] λ°±μ€€ 1697번 μˆ¨λ°”κΌ­μ§ˆ - 파이썬(Python)  (0) 2021.07.15
[BOJ] λ°±μ€€ 7576번 ν† λ§ˆν†  - 파이썬(Python)  (0) 2021.07.15
    'Algorithm/πŸ“˜ Baekjoon Judge' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ 글이닀
    • [BOJ] λ°±μ€€ 2470번 두 μš©μ•‘ - 파이썬(Python)
    • [BOJ] λ°±μ€€ 10026번 적둝색약 - 파이썬(Python)
    • [BOJ] λ°±μ€€ 2583번 μ˜μ—­ κ΅¬ν•˜κΈ° - 파이썬(Python)
    • [BOJ] λ°±μ€€ 1697번 μˆ¨λ°”κΌ­μ§ˆ - 파이썬(Python)
    J1Yun
    J1Yun
    개발 κ΄€λ ¨ 기술 및 곡뢀 λ‚΄μš© 기둝μž₯

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