์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

[๋ฐฑ์ค€-Python] N๋ฒˆ์งธ ํฐ ์ˆ˜ : 2075๋ฒˆ

Yuuuki 2024. 6. 6. 19:45

๐Ÿฅˆ Silver2

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

 

 

โŽ 1์ฐจ ํ’€์ด

import sys

# maxHeap
# ์ค„๋งˆ๋‹ค ๊ฐ€์žฅ ํฐ ๊ฐ’ ๋น„๊ตํ›„ ๊ฐ€์žฅ ํฐ ๊ฐ’์€ pop

input = sys.stdin.readline
n=int(input())

heap=[]

temp=[]
for _ in range(n):
    temp.append(list(map(int,input().split())))

#์„ธ๋กœ์ค„๋กœ heap ์ƒ์„ฑ
heap_list=[]
for i in range(n): #row
    t=[]
    for j in range(n): #col
        t.append(temp[j][i])
    heap_list.append(t)
print(heap_list)

# ๋ฆฌ์ŠคํŠธ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ฐ€์žฅ ํฐ ์ˆ˜ ๋ฝ‘๊ธฐ
for i in range(n):
    num=heap_list[i][len(heap_list[i])-1]
    if num==max()

์ฒ˜์Œ์—”, ํ•œ์ค„๋งˆ๋‹ค maxHeap์œผ๋กœ ๊ตฌํ˜„๋˜์–ด์žˆ๋‹ค๋Š” ์ƒ๊ฐ์— ํฌ๊ฒŒ ๋ณผ์ƒ๊ฐ์„ ๋ชปํ–ˆ๋‹ค....

๊ทธ๋Ÿฐ๋ฐ ์„ธ๋กœ๋กœ ์ฝ์–ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์ค‘ for๋ฌธ์œผ๋กœ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค๊ณ , ๊ทธ ๋ฆฌ์ŠคํŠธ๋“ค์„ maxHeap์œผ๋กœ ๊ด€๋ฆฌํ•ด์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ pop์œผ๋กœ ๋นผ๋‚ด๋ฉด์„œ n๋ฒˆ์งธ ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋ฉด ๋˜์ง€ ์•Š์„๊นŒ ์ด๋Ÿฐ์ƒ๊ฐ์„ ํ–ˆ๋‹ค... 

๊ทผ๋ฐ ์ด๊ฑธ ์ฝ”๋“œ๋กœ ์˜ฎ๊ธฐ๋ฉด์„œ 2์ค‘ for๋ฌธ๋ถ€ํ„ฐ ์ด๊ฒŒ ๋งž๋‚˜ ์‹ถ๊ธฐ๋„ ํ–ˆ๊ณ ,

๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” heap์€ ๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ํž™์ •๋ ฌ์ด ์ด๋ฃจ์–ด์ง€๋Š”๋ฐ ๊ทธ๋ ‡๋‹ค๊ณ  [12, 13, 21, 48, 52] ์ด ์ค„์„ reverseํ•ด๋ฒ„๋ฆฌ๋ฉด pop์ด ์•„๋‹Œ shift๊ฐ€ ๋˜๋ฉด ๋„ˆ๋ฌด ๋น„ํšจ์œจ์ ์ด๋‹ค... 

๊ทธ๋ž˜์„œ ์ด๋ฐฉ๋ฒ•์€ ๋”์ด์ƒ์€ ์•ˆ๋˜๊ฒ ๋‹ค ์‹ถ์–ด์„œ ์ ‘์—ˆ๋‹ค ๐Ÿ™„

 

https://naroforme.tistory.com/entry/%EB%B0%B1%EC%A4%80-2075%EB%B2%88-N%EB%B2%88%EC%A7%B8-%EC%88%98-%ED%8C%8C%EC%9D%B4%EC%8D%AC

 

โŽ 2์ฐจ ํ’€์ด

input = sys.stdin.readline
n=int(input())

heap=[]

num_list=[list(map(int,input().split())) for _ in range(n)]
print(num_list)
    
for num in num_list:
    for n in num:
        heapq.heappush(heap,(-n,n))


for i in range(n-1):
    heapq.heappop(heap)

print(heap[0][1])

 

https://naroforme.tistory.com/entry/%EB%B0%B1%EC%A4%80-2075%EB%B2%88-N%EB%B2%88%EC%A7%B8-%EC%88%98-%ED%8C%8C%EC%9D%B4%EC%8D%AC

 

[๋ฐฑ์ค€] 2075๋ฒˆ : N๋ฒˆ์งธ ์ˆ˜ ํŒŒ์ด์ฌ

์‹œ๊ฐ„์ œํ•œ ๋ฉ”๋ชจ๋ฆฌ์ œํ•œ ์ •๋‹ต ๋น„์œจ 1 ์ดˆ 12 MB 39.455% ๋ฌธ์ œ N×N์˜ ํ‘œ์— ์ˆ˜ N^2๊ฐœ ์ฑ„์›Œ์ ธ ์žˆ๋‹ค. ์ฑ„์›Œ์ง„ ์ˆ˜์—๋Š” ํ•œ ๊ฐ€์ง€ ํŠน์ง•์ด ์žˆ๋Š”๋ฐ, ๋ชจ๋“  ์ˆ˜๋Š” ์ž์‹ ์˜ ํ•œ ์นธ ์œ„์— ์žˆ๋Š” ์ˆ˜๋ณด๋‹ค ํฌ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์•„๋ž˜์™€ ๊ฐ™

naroforme.tistory.com

 

์ด ํฌ์ŠคํŒ…์„ ์ฐธ๊ณ ํ•ด์„œ, ๋‹ค์‹œ ์ž‘์„ฑํ•ด๋ณด์•˜๋‹ค. 

๊ทธ๋ƒฅ ๋‹จ์ˆœํ•˜๊ฒŒ input์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ๋ชจ๋“  ์ˆ˜๋ฅผ maxHeap์— ๋‹ด์•„ pop์„ ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ํฐ๊ฐ’์„ ๋ฝ‘์•„๋‚ด๋Š” ๋ฐฉ์‹์ด๋‹ค.

์‹ค๋ฒ„2์ธ๋ฐ.. ์—ญ์‹œ ์ด๋ฐฉ๋ฒ•์€ ๋ฉ”๋ชจ๋ฆฌ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.

 

 

 

โ—๏ธHeap์˜ ํฌ๊ธฐ๊ฐ€ ์ผ์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ 

 

 

๊ฒ€์ƒ‰์„ ํ•ด๋ณด๋‹ค๊ฐ€, ํž™์„ ์ผ์ •ํ•œ ํฌ๊ธฐ๋กœ ์œ ์ง€ํ•ด์•ผํ•œ๋‹ค๊ธธ๋ž˜ GPT ์„ ์ƒ์—๊ฒŒ ๋ฐ”๋กœ ๋ฌผ์–ด๋ณด์•˜๋”๋‹ˆ

๋‚ด๊ฐ€ ๋ฐ”๋กœ ์ € nxnํ–‰๋ ฌ์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ €์žฅํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์—, ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ–ˆ๋‚˜๋ณด๋‹ค...

 

๐Ÿ‘‰๐Ÿป ํž™์˜ํฌ๊ธฐ๋ฅผ n์œผ๋กœ ์œ ์ง€์‹œ์ผœ, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ œํ•œ์‹œํ‚ค์ž!

 

 

โœ… ์ •๋‹ต

import heapq
import sys
input = sys.stdin.readline

n = int(input())
heap = []

for _ in range(n):
    nums = list(map(int,input().split())) #[12,7,9,15,5]

    if not heap:
        for num in nums: 
            heapq.heappush(heap, num) # ์ดˆ๊ธฐ๊ฐ’ n๊ฐœ ๋„ฃ์–ด์ฃผ๊ธฐ [5,7,9,12,15]
        
    else:
        for num in nums:
            if num > heap[0]:
                heapq.heappop(heap) # ๋งจ์•ž์ œ๊ฑฐํ•˜๊ณ 
                heapq.heappush(heap, num) # ์ƒˆ๋กœ์šด ๊ฐ’ ๋„ฃ์–ด์ฃผ๊ธฐ
              
               
print(heap[0])
๋ฉ”๋ชจ๋ฆฌ ์‹คํ–‰์‹œ๊ฐ„
33188KB 760ms

 

ํž™์˜ ํฌ๊ธฐ๋ฅผ n์˜ ๊ฐ’์œผ๋กœ ๊ณ ์ •ํ•ด์•ผํ•œ๋‹ค๋Š” ํ”ผ๋“œ๋ฐฑ์„ ๊ฐ€์ง€๊ณ ,

n๊ฐœ์”ฉ input์„ ๋ฐ›์•„ ์ฒ˜์Œ ์ดˆ๊ธฐ๊ฐ’์€ heappush๋กœ ์„ค์ •ํ•ด์ฃผ๊ณ , ์ตœ์ข…์ ์œผ๋กœ ๊ฐ€์žฅ ํฐ n๊ฐœ์˜ ๊ฐ’๋งŒ์„ ๋‚จ๊ฒจ์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์—

์ˆœํšŒ๋ฅผ ํ†ตํ•ด Input์œผ๋กœ ๋ฐ›์€ ์ƒˆ๋กœ์šด ๊ฐ’๊ณผ ํž™์— ์กด์žฌํ•˜๋Š” ๊ฐ€์žฅ ์ž‘์€๊ฐ’์„ pop์œผ๋กœ ์—†์• ์ค€๋‹ค.

๊ทธ๋ ‡๊ฒŒ ์ตœ์ข…์ ์œผ๋กœ ๋‚จ์€ heap์€ [5,4,3,2,1]๋ฒˆ์งธ๋กœ ํฐ์ˆ˜๋“ค์ด ๋‹ด๊ฒจ์žˆ์„๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— 0๋ฒˆ์งธ ์ธ๋ฑ์Šค๊ฐ’์„ ์ถœ๋ ฅํ•ด์ฃผ๋ฉด๋œ๋‹ค! โœจ