프로그래밍/Algorithm 105

백준 1826 파이썬**

https://www.acmicpc.net/problem/1826 1826번: 연료 채우기 첫째 줄에 주유소의 개수 N(1 ≤ N ≤ 10,000)가 주어지고 두 번째 줄부터 N+1번째 줄 까지 주유소의 정보가 주어진다. 주유소의 정보는 두개의 정수 a,b로 이루어 져 있는데 a(1 ≤ a ≤ 1,000,000)는 성경 www.acmicpc.net import heapq import sys N = int(sys.stdin.readline()) gas_stations = [] for _ in range(N): a, b = map(int, sys.stdin.readline().rstrip().split()) heapq.heappush(gas_stations, (a, b)) remain_distance, re..

백준 11000 파이썬

https://www.acmicpc.net/problem/11000 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109) www.acmicpc.net import sys import heapq N = int(sys.stdin.readline()) class_list = [] for _ in range(N): S, T = map(int, sys.stdin.readline().rstrip().split()) class_list.append((S, T)) class_list.sort() # print(class_list) q = [] for c in class_list: if q and q[0]

백준 2012 파이썬**

https://www.acmicpc.net/problem/2012 2012번: 등수 매기기 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 500,000) 둘째 줄부터 N개의 줄에 걸쳐 각 사람의 예상 등수가 순서대로 주어진다. 예상 등수는 500,000 이하의 자연수이다. www.acmicpc.net import sys N = int(sys.stdin.readline()) R = [] for _ in range(N): R.append(int(sys.stdin.readline())) R.sort() ans = 0 for i in range(1, N + 1): ans += abs(i - R[i - 1]) print(ans) 간단하게 생각하면 될 문제인데, 첫단추를 잘못끼워서 그런지 많이 헤맸다. 1. 받..

백준 1781 파이썬**

https://www.acmicpc.net/problem/1781 1781번: 컵라면 상욱 조교는 동호에게 N개의 문제를 주고서, 각각의 문제를 풀었을 때 컵라면을 몇 개 줄 것인지 제시 하였다. 하지만 동호의 찌를듯한 자신감에 소심한 상욱 조교는 각각의 문제에 대해 데드라 www.acmicpc.net import sys import heapq if __name__ == '__main__': N = int(sys.stdin.readline()) exam_info = [] for _ in range(N): d, c = map(int, sys.stdin.readline().rstrip().split()) exam_info.append((d, c)) exam_info.sort() q = [] for exam ..

백준 1202 파이썬**

https://www.acmicpc.net/problem/1202 1202번: 보석 도둑 첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000) 다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000) 다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci www.acmicpc.net import heapq import sys if __name__ == '__main__': N, K = map(int, input().split()) jewels = [] bags = [] for _ in range(N): M, V = map(int, sys.stdin.readline().rstrip().split()) heapq.hea..

백준 19939 파이썬

https://www.acmicpc.net/problem/19939 19939번: 박 터뜨리기 $N$개의 공을 $K$개의 바구니에 문제의 규칙을 만족하면서 나눠 담을 수 있다면, 가장 많이 담긴 바구니와 가장 적게 담긴 바구니의 공의 개수 차이를 출력한다. 나눠 담을 수 없는 경우에는 -1을 www.acmicpc.net import sys if __name__ == '__main__': N, K = map(int, input().split()) condition_ball = 0 for i in range(1, K + 1): condition_ball += i if N < condition_ball: print(-1) else: if (N - condition_ball) % K == 0: print(K -..

백준 2122 파이썬

https://www.acmicpc.net/problem/2212 2212번: 센서 첫째 줄에 센서의 개수 N(1 ≤ N ≤ 10,000), 둘째 줄에 집중국의 개수 K(1 ≤ K ≤ 1000)가 주어진다. 셋째 줄에는 N개의 센서의 좌표가 한 개의 정수로 N개 주어진다. 각 좌표 사이에는 빈 칸이 하나 있 www.acmicpc.net import sys if __name__ == '__main__': N = int(input()) K = int(input()) S = list(map(int, sys.stdin.readline().rstrip().split())) S.sort() distance = [] for i in range(1, N): distance.append(S[i] - S[i-1]) dis..

백준 1309 동물원 파이썬

www.acmicpc.net/problem/1309 1309번: 동물원 첫째 줄에 우리의 크기 N(1≤N≤100,000)이 주어진다. www.acmicpc.net n = int(input()) dp = [0] * (n + 1) dp[0] = 1 dp[1] = 3 for i in range(2, n + 1): dp[i] = (2 * dp[i - 1] + dp[i - 2]) % 9901 print(dp[n]) 이 문제는 일단 풀긴했는데 정확히 왜그런지 이해하지 못한채로 얼떨결에 규칙을 찾아버렸다 우선, 문제에서 동물을 하나도 배치하지 않은 경우도 하나의 경우의 수라 했으니 dp[0] = 1 로 초기화해준다. 그리고 n 이 1로 1*2 의 크기를 갖는 경우, 아무것도 배치 하지 않은 경우, 오른쪽에 배치하는 ..

백준 11055 가장 큰 증가 부분 수열 파이썬

www.acmicpc.net/problem/11055 11055번: 가장 큰 증가 부분 수열 수열 A가 주어졌을 때, 그 수열의 증가 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가 부분 수 www.acmicpc.net n = int(input()) nums = list(map(int, input().split())) dp = [0] * n dp[0] = nums[0] for i in range(1, n): dp[i] = nums[i] if nums[i] > nums[i - 1]: dp[i] = nums[i - 1] + nums[i] for j in range(i - ..