티스토리 뷰
https://www.acmicpc.net/problem/2075
2075번: N번째 큰 수
첫째 줄에 N(1 ≤ N ≤ 1,500)이 주어진다. 다음 N개의 줄에는 각 줄마다 N개의 수가 주어진다. 표에 적힌 수는 -10억보다 크거나 같고, 10억보다 작거나 같은 정수이다.
www.acmicpc.net
이해도
★★☆☆☆
접근법
- 반복문 접근하면 메모리 초과가 나서 우선순위 큐를 구현해야 한다.
- 우선순위 큐는 힙으로 구현한다.
- 한 행씩 진행한다.
- 힙이 비어있다면 푸시하고, 비어있지 않은데 가장 작은 수보다 큰 수가 나오면 푸시하고, 추가된 힙에서 가장 작은 수를 pop 한다.
- 하나씩 추가했다 뺏다를 반복하므로 가장 큰 수부터 N개의 숫자가 힙에 담겨있다.
- 그 중 가장 작은 수를 출력한다.
왜 메모리 초과 문제가 발생하지 않는지?
- 우선순위 큐의 시간복잡도(힙의 데이터 삽입과 삭제)는 logN이다.
- 반복문의 경우 이중 for 문 뿐 아니라 배열을 전체순회하므로 우선순위 큐보다 시간복잡도가 높다.
import heapq
N = int(input())
heap = []
for _ in range(N):
nums = list(map(int, input().split()))
# 만약 heap 이 비어있다면 item을 heap으로 푸시한다.
if not heap:
for num in nums:
heapq.heappush(heap, num)
# heap 이 비어있지 않다면
else:
for num in nums:
# 만약 가장 작은 항목보다 큰 수가 나오면 해당 수를 푸시하고, 새로운 힙에서 가장 작은 수를 pop 한다.
if heap[0] < num:
heapq.heappush(heap, num)
heapq.heappop(heap)
# 반복을 마치면 큰 수부터 N개가 힙에 담겨 있으므로, 그 중 가장 작은 수를 반환한다.
print(heap[0])
코드 참고
[백준/2075번/파이썬(Python)] N번째 큰 수 / 우선순위 큐
문제 N×N의 표에 수 N2개 채워져 있다. 채워진 수에는 한 가지 특징이 있는데, 모든 수는 자신의 한 칸 위에 있는 수보다 크다는 것이다. N=5일 때의 예를 보자. 12 7 9 15 5 13 8 11 19 6 21 10 26 31 16 48 1..
kyoung-jnn.tistory.com
메모리 초과한 반복문
# 메모리 초과
N = int(input())
board = [list(map(int, input().split())) for x in range(N)]
maxnum = 0
for i in range(N):
for j in range(N):
maxnum = max(board[i][j], maxnum)
arr = []
for i in range(N - 1, -1, -1):
for j in range(N - 1, -1, -1):
arr.append(maxnum - board[i][j])
arr.sort()
print(maxnum - arr[N-1])
'Algorithm' 카테고리의 다른 글
heappush vs. heapify 왜 다를까 / 힙 자료구조 (0) | 2021.11.02 |
---|---|
[Programmers][그리디] 조이스틱 python (211031) (0) | 2021.10.31 |
[Programmers][해시(Hash)] 완주하지 못한 선수 python (211028) (0) | 2021.10.28 |
[Programmers][힙(Heap)] 더 맵게 python (211027) (0) | 2021.10.27 |
정렬 알고리즘 정리&비교 (진행중..) (0) | 2021.10.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 깃허브계정
- 개발도서추천
- 개발자도서추천
- 클린코드
- 개발자
- 한글무료폰트추천
- 개발언어순위
- 폰트
- 브왈라
- 싸피
- SSAFY
- ssafy6기
- 싸피6기
- 디즈니얼굴
- ssafy결과
- 맥과윈도우로깃허브
- 개발언어추천
- 무료폰트추천
- 코딩도서
- ssafy후기
- 깃허브계정2개
- 개발자커리
- 폰트추천
- intj여자
- 개발자책추천
- 클린코더
- 개발자로드맵
- ssafy합격후기
- 상업용무료폰트
- 임대차3법
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함