본문 바로가기

알고리즘10

11279 최대힙 Heap의 기본 개념인 Binary search를 활용해 문제를 풀어 보았다 import sys import heapq from collections import deque input = sys.stdin.readline N = int(input()) heap = [] for i in range(N): n = int(input()) if n == 0 : if len(heap) == 0 : print(0) else: print(heap.pop(-1)) else: if len(heap) == 0 : heap.append(n) else: left = 0 right = len(heap)-1 while left n : right = mid -1 else: left = mid + 1 heap.insert(left,.. 2022. 7. 11.
백준 1016 문제 어떤 수 X가 1보다 큰 제곱수로 나누어 떨어지지 않을 때, 제곱ㄴㄴ수라고 한다. 제곱수는 정수의 제곱이다. min과 max가 주어지면, min과 max를 포함한 사이에 제곱ㄴㄴ수가 몇 개 있는지 출력한다. 입력 첫째 줄에 두 정수 min과 max가 주어진다. 출력 첫째 줄에 [min,max]구간에 제곱ㄴㄴ수가 몇 개인지 출력한다. 해결방안 해당 방식은 에라토스테네스의 채 방식을 사용하였다. boolean list를 사용하엿으며 제곱수에 나눠 지는 수를 모두 false 로 두어 해결하고자 하였다. min , mx = map(int,input().split()) check = [True]*(mx+1-min+1) check[0] = False for i in range(2,mx+1): a = 0 cnt.. 2021. 3. 13.
백준_1092 문제 지민이는 항구에서 일한다. 그리고 화물을 배에 실어야 한다. 모든 화물은 박스에 안에 넣어져 있다. 항구에는 크레인이 N대 있고, 1분에 박스를 하나씩 배에 실을 수 있다. 모든 크레인은 동시에 움직인다. 각 크레인은 무게 제한이 있다. 이 무게 제한보다 무거운 박스는 크레인으로 움직일 수 없다. 모든 박스를 배로 옮기는데 드는 시간의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보다 작거나 같은 자연수이다. 넷째 줄에는 각 박스의 무게가 주어진다. 이 값도 1,000,000보다 작거나 .. 2021. 3. 12.
백준 10942 팰린드롬? 문제 명우는 홍준이와 함께 팰린드롬 놀이를 해보려고 한다. 먼저, 홍준이는 자연수 N개를 칠판에 적는다. 그 다음, 명우에게 질문을 총 M번 한다. 각 질문은 두 정수 S와 E(1 ≤ S ≤ E ≤ N)로 나타낼 수 있으며, S번째 수부터 E번째 까지 수가 팰린드롬을 이루는지를 물어보며, 명우는 각 질문에 대해 팰린드롬이다 또는 아니다를 말해야 한다. 예를 들어, 홍준이가 칠판에 적은 수가 1, 2, 1, 3, 1, 2, 1라고 하자. S = 1, E = 3인 경우 1, 2, 1은 팰린드롬이다. S = 2, E = 5인 경우 2, 1, 3, 1은 팰린드롬이 아니다. S = 3, E = 3인 경우 1은 팰린드롬이다. S = 5, E = 7인 경우 1, 2, 1은 팰린드롬이다. 자연수 N개와 질문 M개가 모.. 2021. 3. 6.