목록전체 글 (601)
sm 기술 블로그
from queue import PriorityQueue import sys input = sys.stdin.readline N = int(input()) que = PriorityQueue(maxsize=N) result = [] for _ in range(N): X = int(input()) if X == 0: if que.empty(): result.append("0") else: result.append(str(-que.get())) else: que.put(-X) for val in result: print(val) 문제요약 값을 입력하는데 0이면 현재 입력된 값 중에 가장 큰 값을 출력하라.(내림차순 필요) 설명 우선순위 큐를 이용한다. 유선순위 큐에 대해서는 다음을 참고하자. https://..
우선순위 큐 큐(Queue)는 먼저 들어오는 데이터가 먼저 나가는 FIFO(First In First Out) 형식의 자료구조이다. 우선순위 큐(Priority Queue)는 먼저 들어오는 데이터가 아니라, 우선순위가 높은 데이터가 먼저 나가는 형태의 자료구조이다. 우선순위 큐는 일반적으로 힙을 이용한다. 힙(Heap) 우선순위 큐를 위해 고안된 완전이진트리 형태의 자료구조. 여러 개의 값 중에서 최대값과 최솟값을 찾아내는 연산이 빠르다. 최대 힙 (Max Heap)❝ key(부모노드) ≥ key(자식노드) ❞ 부모 노드의 키 값이 자식 노드보다 크거나 같은 완전이진트리이다. 최소 힙 (Min Heap)❝ key(부모노드) ≥ key(자식노드) ❞ 부모 노드의 키 값이 자식 노드보다 작거나 같은 완전이진..
import java.util.*; import java.io.*; import java.security.DrbgParameters.NextBytes; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); int[] A = new int[N]; String[] tmp = br.readLine().split(" "); for(int i = 0; i < tmp.length; i++) { A[i] = Integer.parseInt(..
본 코드는 PyPy로 제출해야 합니다. import sys input = sys.stdin.readline N = int(input()) A = list(map(int, input().split())) LIS = [] LIS.append(A[0]) for i in range(1, len(A)): if(A[i] > LIS[-1]): LIS.append(A[i]) else: start = 0 end = len(LIS) while(end - start >= 0): mid = (start + end) // 2 if(LIS[mid] < A[i]): start = mid + 1 else: end = mid - 1 LIS[start] = A[i] print(len(LIS)) 문제요약 이분 탐색을 이용하여 가장 긴 수..