목록코딩 테스트/백준 문제 풀이 (107)
공부 기록장
https://www.acmicpc.net/problem/1916 코드import sysimport heapqinput = sys.stdin.readlineINF = int(1e9)n = int(input())m = int(input())graph = [[] for _ in range(n+1)]distance = [INF] * (n+1)for _ in range(m): a, b, c = map(int, input().split()) graph[a].append((b, c))start, end = map(int, input().split())def dijkstra(start): q = [] heapq.heappush(q, (0, start)) distance[start] = 0 ..
https://www.acmicpc.net/problem/11279 코드import sys, heapqinput = sys.stdin.readlinemax_heap = []n = int(input())for i in range(n): num = int(input()) * -1 if num == 0: print(heapq.heappop(max_heap) * -1 if max_heap else 0) else: heapq.heappush(max_heap, num) 접근 방식1. 주어진 수가 0이 아닌 경우, 그 수를 -1을 곱해서 음수로 만들어 최대 힙으로 활용할 최소 힙에 넣는다2. 주어진 수가 0인 경우, 최대 힙에서 가장 큰 값을 꺼내서 출력하고, 힙이 비어 있으..
https://www.acmicpc.net/problem/2075 코드import heapq as hqimport sysinput = sys.stdin.readlinen = int(input())heap = []init_numbers = list(map(int, input().split()))for num in init_numbers: hq.heappush(heap, num)for i in range(n-1): numbers = list(map(int, input().split())) for num in numbers: if heap[0] 접근 방식1. 처음에 주어진 N개의 숫자를 최소 힙에 모두 넣는다2. 이후 추가로 들어오는 숫자들을 확인하며, 힙의 최솟값(heap[0]..
https://www.acmicpc.net/problem/17609 코드n = int(input())for _ in range(n): st = input() left, right = 0, len(st) - 1 answer = 0 while left 접근 방식1. 양 끝에서 포인터로 이동하면서 같으면 계속 이동2. 다르면 양쪽을 각각 이동시켜본 후 회문이지 확인3. 한 쪽 문자만 제거하고 회문이면 유사회문4. 한 쪽 문자를 제거하고도 회문이 아니면 회문 아님5. else 문에 안걸리면 일반 회문 배운 점1. 문자열에서는 슬라이싱이 유용하게 사용된다2.st[left:right][::-1] 위와 같이 슬라이싱으로 잘라낸 후, 다시 해당 잘라낸 문자열을 뒤집기도 가능하다