문제 링크: https://www.acmicpc.net/problem/23253 23253번: 자료구조는 정말 최고야 위 그림처럼 책이 쌓여 있으므로, 첫 번째 더미 - 두 번째 더미 - 첫 번째 더미 - 두 번째 더미 순으로 꺼내면 책 번호순으로 나열할 수 있다. www.acmicpc.net 문제 풀이 스택으로 차례대로 빼면서 안되는 경우를 생각했지만 스택을 굳이 이용할 필요가 없다. 더미는 중복되지 않으며 책이 1권씩 있기 때문에 그냥 한 개의 더미라도 내림차순이 아니라면 올바르게 나열할 수 없다. 코드
문제 링크: https://www.acmicpc.net/problem/15728 15728번: 에리 - 카드 첫째 줄에 N, K(0 ≤ K < N ≤ 100)가 주어지고 둘째 줄에는 N개의 ‘공유 숫자카드’에 적혀 있는 정수, 셋째 줄에는 N개의 ‘팀 숫자카드’에 적혀 있는 정수가 주어진다. 이 수는 -10,000보다 크거나 www.acmicpc.net 문제 풀이 처음에는 우선순위 큐로 풀려했다가 N과 K의 범위가 작아서 브루트 포스로 풀었다. 전부 확인해서 곱이 가장 큰 팀 카드들을 뽑았다. set()을 이용해서 원소를 뽑는데 remove를 이용했다. O(1)로 없앨 수 있기 때문에 시간단축에 도움이 된다. 코드
문제 링크: https://www.acmicpc.net/problem/2056 2056번: 작업 수행해야 할 작업 N개 (3 ≤ N ≤ 10000)가 있다. 각각의 작업마다 걸리는 시간(1 ≤ 시간 ≤ 100)이 정수로 주어진다. 몇몇 작업들 사이에는 선행 관계라는 게 있어서, 어떤 작업을 수행하기 위해 www.acmicpc.net 문제 풀이 위상 정렬에 다이나믹 프로그래밍을 이용하는 문제이다. 사실상 웰노운 문제인 1005번의 아이디어를 가져왔다. 상관 관계가 있는 작업의 시간을 가져와 max()로 최댓값을 갱신해줘야 한다. 어떤 작업을 수행하기 위해 반드시 먼저 완료되어야 하기 때문이다. dp 테이블을 만들어서 가장 시간이 오래 걸린 것을 출력하면 된다. 이 역시도 max()를 이용하면 된다. 물론 ..
문제 링크: https://www.acmicpc.net/problem/22993 22993번: 서든어택 3 좋은 전투 순서가 존재해서 준원이만 생존하고 나머지 플레이어가 모두 죽게 만들 수 있다면 Yes를, 반대로 전투가 어떤 순서로 이루어져도 준원이가 절대 최후의 생존자가 될 수 없다면 No를 www.acmicpc.net 문제 풀이 그리디 문제이다. 두 사람이 동시에 싸우지 못하니 그냥 준원이가 차례차례 한사람씩 싸운다 생각하자. 우리는 준원이를 최후의 생존자로 만들어야 하니 최적의 조건으로 맞춰줘야 하기 때문이다. 최후의 생존자로 만들기 위해서는 좋은 순서를 만들어줘야 하는데 약한 적부터 강한 적으로 오름차순 정렬을 해주면 된다. 약한 적이랑 만나면서 공격력을 올려주면 되는 것이다. 하지만 최후의 생..
- Total
- Today
- Yesterday
- Simulation
- 시뮬레이션
- 정렬
- backtracking
- BOJ
- Implementation
- Topological Sorting
- 너비 우선 탐색
- 위상 정렬
- 파이썬
- math
- Sorting
- convex hull
- greedy
- Python
- 백트래킹
- DP
- 다이나믹 프로그래밍
- 볼록 껍질
- 브루트포스
- set
- MST
- 수학
- 집합과 맵
- Brute Force
- 그리디
- TEXT
- 구현
- 최소 신장 트리
- BFS
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
