본문 바로가기

알고리즘 풀이58

[백준/파이썬] [Silver V] 숫자 카드 - 10815 [Silver V] 숫자 카드 - 10815 문제 링크 성능 요약 메모리: 110016 KB, 시간: 1240 ms 분류 이분 탐색(binary_search), 자료 구조(data_structures), 정렬(sorting) 문제 설명 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다. 두 숫자 .. 2023. 1. 18.
[백준/파이썬] 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.