일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 재귀
- 정렬
- 트리
- XR Interaction Toolkit
- 그리디 알고리즘
- 시뮬레이션
- Team Fortress 2
- 브루트포스
- VR
- 백준
- 그래프
- 우선순위 큐
- c++
- 스택
- ue5
- 다익스트라
- Unreal Engine 5
- 유니온 파인드
- 구현
- 투 포인터
- 백트래킹
- 자료구조
- 알고리즘
- DFS
- 유니티
- 수학
- BFS
- 다이나믹 프로그래밍
- 누적 합
- 문자열
- Today
- Total
목록그리디 알고리즘 (41)
1일1알

전체 책의 갯수에서 이미 정렬되어있는 책의 갯수를 빼면 된다. 예를 들어 책이 6권 있고, 4 1 5 2 6 3 이런 식으로 되어 있다면, 4, 5, 6은 이미 정렬된 상태이기 때문에 1, 2, 3을 빼서 위에 놓으면 된다. #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; int n; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n; vector v(n + 1); ..

1. 크기가 n + 1인 벡터를 원소들의 초기값을 1로 선언한다. (기본적으로 가지고 있는 카약은 1개) 2. 카약이 손상된 팀의 카약을 -1을 해준다. 3. 카약을 하나 더 가져온 팀의 카약을 +1 해준다. 4. 1번 팀부터 n번 팀까지 탐색하면서, 카약의 수가 0이면 왼쪽 먼저 확인해서 여유분이 있으면 빌리고, 없다면 오른쪽을 확인해서 여유분이 있으면 빌리고, 양쪽 다 없다면 어쩔 수 없이 출발하지 못하게 된다. 5. 최종적으로 출발하지 못하는 팀의 수를 구한다. #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace s..

우선 n1일 동안 n에서 n을 넘지 않는 최대의 2의 제곱을 빼가면서 n을 줄였다. 물론 k도 1씩 줄여줬다. 빼는 도중에 혹은 while문을 빠져나왔을 때 n이 0이라면 물병을 더 구매할 필요가 없기 때문에 0을 출력하고 프로그램을 종료하였다. n가 0이 아닌 경우에는 n보다 큰 2의 제곱 중 가작 작은 수에서 n을 빼면 구매해야하는 물병의 최솟값이다. 출력 조건에 정답이 없을 경우에는 -1을 출력하라고 했는데, 정답이 없을 경우는 없을 것 같아서 만들지 않았는데 통과되었다. 속임수였던 것 같다. #include #include #include #include #include #include #include #include #include #include #include #include #include..

1,000,000,000 까지 포함할 수 있는 피보나치 배열을 만들고, 큰 값부터 빼가면서 답을 구했다. #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int t; cin >> t; vector fib(47); fib[0] = 0; fib[1] = 1; for (int i = 2; i < 47; i++) { fib[i] = fib[..

일반적인 정렬을 하면 첫 번째 원소와 마지막 원소를 비교했을 때 차이가 많이 나는 결과가 나오기 때문에 일반적인 정렬로는 해결할 수 없다. 정렬을 한 뒤 새로운 배열에 처음과 마지막 부분에 순서대로 삽입하는 방법을 생각해 볼 수 있다. 2, 4, 5, 7, 9 가 있으면 처음에 2, 마지막에 4, 다시 앞으로 와서 5, 다시 뒤로 가서 7, 다시 앞으로 와서 9 이런식으로 배열을 만들면 2, 5, 9, 7, 4 이렇게 만들어진다. 하지만 이런식으로 만들려면 배열을 하나 더 만들어야 하기도 하고 구현하기도 번거롭다. 그래서 위의 배열 2개에서 찾은 규칙이 있는데, 그 규칙으로 간단하게 문제를 해결할 수 있다. 정렬된 배열을 순서대로 앞뒤에다 배치하기 때문에 정렬된 배열의 특정 원소에서 2칸 떨어진 원소가 ..