본문 바로가기

전체 글85

[백준/파이썬] 11279번: 최대 힙 https://www.acmicpc.net/problem/11279 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net import sys import heapq maxheap = [] result = [] n = int(sys.stdin.readline()) for _ in range(n): a = int(sys.stdin.readline()) if a > 0: # 최대힙 만드는 법 heapq.heappush(maxheap, (-a, a)) else: if len(maxheap) != 0:.. 2023. 1. 14.
[백준/파이썬] 11724번 : 연결 요소의 개수 https://www.acmicpc.net/problem/11724 11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net import sys sys.setrecursionlimit(10 ** 6) # dfs 함수 정의 def dfs(start): visited[start] = True for i in graph[start]: if not visited[i]: dfs(i) # 정점의 개수 n , 간선의 개수 m n, m = map(int, sys.stdin.. 2023. 1. 14.
[백준/파이썬] 1764번 : 듣보잡 https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net import sys n, m = map(int, sys.stdin.readline().split()) arr1 = set() # 듣도 못한 사람 집합 arr2 = set() # 보도 못한 사람 집합 # 듣고 못한 사람 입력 for _ in range(n): arr1.add(sys.stdin.readline().rstrip()) # 보도 못한 사람 입력 for _ in range(m): arr2... 2023. 1. 14.
[백준/파이썬] 2630번 : 색종이 만들기 https://www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net 1,2,3,4 사분면의 좌표를 생각하면 문제에 접근할 수 있다 . 그래도 코드를 생각하기엔 조금 버거운 문제였다. N = int(input()) arr = [] for _ in range(N): arr.append(list(map(int, input().split()))) result = [] def div(x, y, N): color = arr[x][y] for i i.. 2023. 1. 11.
[백준/파이썬] 1927번: 최소 힙 https://www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net import sys import heapq n = int(sys.stdin.readline()) heap = [] result = [] for _ in range(n): a = int(sys.stdin.readline()) if a > 0: heapq.heappush(heap, a) else: if len(heap) != 0: result.append(heapq.heappop(.. 2023. 1. 10.
[백준/파이썬] 1463번: 1로 만들기 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net import sys x = int(sys.stdin.readline()) # dp 테이블 d = [0 for _ in range(x+1)] for i in range(2, x + 1): # 1을 빼는경우 d[i] = d[i - 1] + 1 # 1을 뺄때와 3과 2로 나눌때 횟의 최솟값을 d[i]에 담는다 if i % 2 == 0: d[i] = min(d[i], d[i // 2] + 1) if i % 3 == 0: d[i] = min(d[i], d[i // 3] + 1) #결과 출력 print(d[x]) 2023. 1. 10.