본문 바로가기

백준14

백준 게임개발 (Python/Go) 문제 링크: www.acmicpc.net/problem/1516 위상 정렬 문제입니다. 그런데 최소 시간을 알아내야 하기 때문에 위상정렬 + heap을 사용하여 풀어야 합니다. 아래는 파이썬 코드입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 import heapq from collections import defaultdict n = int(input()) degree = [0] * (n+1) # degree[1] = 2 이라면 1번 건물을 짓기 위해 먼저 지어져야 하는 건물이 2개라는 뜻 time = [0] * (n+1) # 각 건물 짓는데 걸.. 2021. 4. 4.
백준 최단경로 (Python/Go) 문제 링크: www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1≤V≤20,000, 1≤E≤300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1≤K≤V)가 주어진다. www.acmicpc.net 기본 다익스트라 문제입니다. 아래는 파이썬 코드입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 from collections import defaultdict import heapq def dijkstra(start): dist = defaultdict(in.. 2021. 4. 3.
백준 피자굽기 (Python/Go) 문제 링크: www.acmicpc.net/problem/1756 1756번: 피자 굽기 첫째 줄에 오븐의 깊이 D와 피자 반죽의 개수 N이 공백을 사이에 두고 주어진다. (1 rp { break } mid := (lp + rp) / 2 diameter := oven[mid] if diameter >= dough { lp = mid + 1 piledLoc = mid isPiled = true } else { rp = mid - 1 } } return piledLoc, isPiled } func main() { var d, n int fmt.Scanln(&d, &n) oven := make([]int, d) doughs := make([]int, n) scanner := bufio.NewScanner(os... 2021. 4. 2.
백준 가장 긴 증가하는 부분 수열4 (Python/Go) 문제 링크: www.acmicpc.net/problem/14002 14002번: 가장 긴 증가하는 부분 수열 4 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net LIS 문제인데 단순 개수만 구하는게 아닌 어떤 원소들로 이루어져있는지도 출력해야하는 문제입니다. 기본적인 LIS 코드는 아래와 같습니다. dp를 0이 아닌 1로 초기화하는 것에 주의해야합니다. 자기 자신을 포함하기 때문에 1로 초기화 해야합니다. 1 2 3 4 5 6 7 8 9 10 11 12 n = int(inpu.. 2021. 4. 1.