본문 바로가기

백준알고리즘

(5)
[동적계획법] 백준 14501번 '퇴사' (Python) https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 1. 리스트 뒤에서부터 거꾸로 확인 #이취코 답 n = int(input()) t = [] p = [] dp = [0] * (n+1) max_value = 0 for i in range(n): a,b = map(int,input().split()) t.append(a) p.append(b) for i in range(n-1, -1, -1): time = t[i]+i if time
[BFS/DFS] 백준 14888번 '연산자 끼워넣기' (Python) https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 1. 연산을 할 함수를 만든다. 2. 입력값 수만큼 각 연산으로 바꾸고 조합을 만든다. 3. 1번에서 만든 함수를 반복하여 최댓값, 최솟값을 찾는다. #220328 from itertools import permutations def op(a,b,opp): if opp=='+': return a+b elif opp=='-': return a-..
[BFS] 백준 18405번 '경쟁적 전염' (Python) https://www.acmicpc.net/problem/18405 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치 www.acmicpc.net 1. 차례대로 바이러스를 퍼트려야 하므로 deque 사용 2. 바이러스 종류, 시간(s), x, y 값을 q에 담음 3. q가 있을 때, 시간이 지날 때까지 반복 4. q 순서대로 상하좌우 바이러스 증식 #220328 실패 n,k = map(int,input().split()) graph = [] for i in range(n): graph.append(list(ma..
[구현] 백준 15686번 '치킨 배달' (Python) https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 1. 일반 집과 치킨집 좌표 구하기 2. 모든 치킨집 중에서 m개의 치킨집을 뽑는 조합 구하기 3. 조합 하나씩 꺼내서 집마다 가장 가까운 치킨집 거리 구하고 다 더하기 4. 다 더한 치킨집 거리에서 최소 값 구하기 n,m = map(int,input().split()) city = [] chicken = [] home = [] for i in range(n): city.ap..
[동적계획법] 백준 18353번 '병사 배치하기' (Python) https://www.acmicpc.net/problem/18353 18353번: 병사 배치하기 첫째 줄에 N이 주어진다. (1 ≤ N ≤ 2,000) 둘째 줄에 각 병사의 전투력이 공백을 기준으로 구분되어 차례대로 주어진다. 각 병사의 전투력은 10,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 1. 가장 긴 증가하는 부분 수열 알고리즘 이용하여 풀 수 있음 n = int(input()) array = list(map(int,input().split()) array.reverse() dp = [1] * n for i in range(1,n): for j in range(0,i): if array[j] < array[i]: dp[i] = max(dp[i], dp[j]+1) pri..

LIST