sladuf
200
sladuf
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (83)
    • ๐Ÿ“š Programming (32)
      • Swift (13)
      • JAVA (2)
      • Python (6)
      • SQL (6)
      • Web (5)
    • ๐Ÿ“ฑ iOS (25)
      • Base (7)
      • SwiftUI (9)
      • UIKit (7)
      • ์ธ๊ฐ• & ์ฑ… (2)
    • ๐Ÿ”— Algorithm (20)
      • Python (12)
      • Swift (3)
      • Tip (5)
    • ๐Ÿ—‚ ETC (6)

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

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • Swift
  • ์Šค์œ„ํ”„ํŠธ

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

๊ธ€์“ฐ๊ธฐ ์„ค์ •
hELLO ยท Designed By ์ •์ƒ์šฐ.
sladuf

200

[Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ง€ํ˜• ์ด๋™
๐Ÿ”— Algorithm/Python

[Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ง€ํ˜• ์ด๋™

2021. 3. 11. 23:04

 

 

 

๋ฌธ์ œ

programmers.co.kr/learn/courses/30/lessons/62050

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ง€ํ˜• ์ด๋™

[[1, 4, 8, 10], [5, 5, 5, 5], [10, 10, 10, 10], [10, 10, 10, 20]] 3 15 [[10, 11, 10, 11], [2, 21, 20, 10], [1, 20, 21, 11], [2, 1, 2, 1]] 1 18

programmers.co.kr

 

๊ณ„์† ํ‹€๋ ค์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด๋ฅผ ๋ณด๊ณ  ํ‘ผ ๋ฌธ์ œ์ด๋‹ค.

์–ด๋–ป๊ฒŒ ์ด๋Ÿฐ์ƒ๊ฐ์„ ๋– ์˜ฌ๋ฆฌ์ง€...?

 

heap์„ ์‚ฌ์šฉํ•ด์„œ ํ’€์—ˆ๋‹ค.

์ƒ,ํ•˜,์ขŒ,์šฐ ์นธ ์ค‘์— ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ์นธ๊ณผ์˜ ๊ธธ์ด๊ฐ€ height๋ณด๋‹ค ํฌ๋‹ค๋ฉด heap์— ์ฐจ์ด์™€ ์ ์„ ๊ธฐ๋กํ•œ๋‹ค.

height๋ณด๋‹ค ์ž‘๋‹ค๋ฉด 0๊ณผ ์ ์„ ๊ธฐ๋กํ•œ๋‹ค. ์ด๋ฅผ ์ด์šฉํ•ด์„œ min heap์œผ๋กœ ์ตœ์†Œํ•œ์˜ ์‚ฌ๋‹ค๋ฆฌ๋ฅผ ๊ฑด์„คํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

Result

import heapq

def solution(land, height):
    
    dx=[1,-1,0,0]
    dy=[0,0,1,-1]
    n=len(land)
    visited=[[False]*n for x in range(n)]
    #์‹œ์ž‘์ ์€ 0,0 ๋ง๊ณ  ์•„๋ฌด๊ฑฐ๋‚˜ ํ•ด๋„ ๋จ
    h=[(0,0,0)]
    res=0
    while h:
        cnt,x,y=heapq.heappop(h) 
        
        if visited[x][y]:
            continue
            
        res+=cnt        
        visited[x][y]=True
        for i in range(4):
            xx=dx[i]+x
            yy=dy[i]+y
            #๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๋งŒ check
            if 0<=xx<n and 0<=yy<n and not visited[xx][yy]:
                temp=abs(land[x][y]-land[xx][yy])
                #height๋ณด๋‹ค ์ฐจ์ด๊ฐ€ ํฌ๋‹ค๋ฉด ๊ทธ ์ฐจ์ด๋ฅผ ๋„ฃ์–ด์ค˜์•ผํ•จ(์‚ฌ๋‹ค๋ฆฌ ๊ฑด์„ค๋น„์šฉ)
                #height๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ์‚ฌ๋‹ค๋ฆฌ ๊ฑด์„ค๋น„์šฉ์ด ๋“ค์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— 0์„ ์‚ฝ์ž…
                if temp>height:
                    heapq.heappush(h,(temp,xx,yy))
                else:
                    heapq.heappush(h,(0,xx,yy))
    return res
    

 

 

 

 

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ”— Algorithm > Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํ•ฉ์Šน ํƒ์‹œ ์š”๊ธˆ  (0) 2021.03.11
[Python] ๋ฐฑ์ค€ 7453  (2) 2021.03.09
[Python] ๋ฐฑ์ค€ 1208  (0) 2021.03.08
[Python] ๋ฐฑ์ค€ 1167, 1967  (0) 2021.03.08
[Python] ๋ฐฑ์ค€ 10917  (0) 2021.03.07
    '๐Ÿ”— Algorithm/Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [Python] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํ•ฉ์Šน ํƒ์‹œ ์š”๊ธˆ
    • [Python] ๋ฐฑ์ค€ 7453
    • [Python] ๋ฐฑ์ค€ 1208
    • [Python] ๋ฐฑ์ค€ 1167, 1967
    sladuf
    sladuf

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