문제 링크 https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 소스 코드 import sys import heapq input = sys.stdin.readline n = int(input().rstrip()) q = [] for i in range(n): num = int(input().rstrip()) if num == 0: if q: print(heapq.heappop(q)[1]) else: print(0) else: #..
알고리즘
문제 링크 https://www.acmicpc.net/problem/1389 1389번: 케빈 베이컨의 6단계 법칙 첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계가 주어진다. 친구 관계는 A와 B로 이루어져 있으며, A와 B가 친구라는 뜻 www.acmicpc.net 소스 코드 import sys from collections import deque input = sys.stdin.readline n,m = map(int,input().rstrip().split()) # 무방향 그래프 입력받기 graph = [[] for _ in range(n+1)] for i in range(m): a,b = map..
문제 링크 https://www.acmicpc.net/problem/1992 1992번: 쿼드트리 첫째 줄에는 영상의 크기를 나타내는 숫자 N 이 주어진다. N 은 언제나 2의 제곱수로 주어지며, 1 ≤ N ≤ 64의 범위를 가진다. 두 번째 줄부터는 길이 N의 문자열이 N개 들어온다. 각 문자열은 0 또 www.acmicpc.net 소스 코드 import sys input = sys.stdin.readline n = int(input().rstrip()) graph = [] # 그래프 입력받기 for i in range(n): graph.append(list(map(int,input().rstrip()))) def dfs(x,y,n): if n == 1: # 최소 사각형인 경우 바로 추가 answer...
문제 링크 https://www.acmicpc.net/problem/5525 5525번: IOIOI N+1개의 I와 N개의 O로 이루어져 있으면, I와 O이 교대로 나오는 문자열을 PN이라고 한다. P1 IOI P2 IOIOI P3 IOIOIOI PN IOIOI...OI (O가 N개) I와 O로만 이루어진 문자열 S와 정수 N이 주어졌을 때, S안에 PN이 몇 www.acmicpc.net 소스 코드 import sys input = sys.stdin.readline n = int(input()) m = int(input()) s = input().rstrip() # 투 포인터 알고리즘 left, right = 0, 0 cnt = 0 while right < m: # m 범위 내에서 반복 # 3개 슬라이싱..
문제 링크 https://www.acmicpc.net/problem/6064 6064번: 카잉 달력 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터는 한 줄로 구성된다. www.acmicpc.net 소스 코드 def num(m, n, x, y): while x
문제 링크 https://www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net 소스 코드 import sys input = sys.stdin.readline n = int(input().rstrip()) m = int(input().rstrip()) if m: broken = list(map(int,input().rstrip().split())) else: broken = [] gap = abs(n-100) # +,- 로만 이동할 경우 for nu..