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

1. 배열을 탐색하면서 가장 큰 값을 찾는데, 순회 도중 인덱스가 s를 넘어가면 탐색을 중지한다. (인덱스가 s를 넘어서는 가장 큰 값을 찾았다고 해도 인덱스만큼 옮길 수 없기 때문에 그 수를 맨 앞으로 옮길 수 없다.) 2. 찾은 수는 맨 앞으로 옮길 수 있는 수 중에서 가장 큰 수이다. 맨 앞으로 옮기면 그 위치에 고정될 것이고, 앞으로 옮기는 데에 비용이 들기 때문에 배열에서 찾은 수를 지우고 새로운 벡터에 찾은 수를 넣는다. 3. 이론상으로는 앞으로 옮긴 것이기 때문에 s에서 찾은 수의 인덱스를 빼준다. 4. s가 0이 되거나 이미 모든 수가 정렬이 되어있으면 앞에서부터 차례대로 2에서 만든 벡터에 값을 넣어준다. 5. 새로운 벡터의 원소들을 출력한다. #include #include #inclu..

_의 개수의 최대값과 최솟값의 차이는 1이 되어야 하기 때문에 가능한 밑줄의 종류는 두 가지이다. 1. 주어진 문자열과 m을 이용하여 짧은 밑줄에 _가 몇 개 들어가는지와 총 짧은 밑줄의 개수를 구한다. 2. 1과 마찬가지로 긴 밑줄에 _가 몇 개 들어가는지와 총 긴 밑줄의 개수를 구한다. 3. 문자열을 차례대로 보면서 맨 앞이 a~z일 경우 긴 밑줄의 개수가 1 이상이면 긴 밑줄을 붙이고 긴 밑줄의 개수를 1 줄인다. 4. 맨 앞이 A ~ Z일 경우 짧은 밑줄의 개수가 1 이상이면 짧은 밑줄을 붙이고 짧은 밑줄의 개수를 1 줄인다. 5. 3,4 조건만 있을 경우 모든 문자열의 첫 글자가 A~Z이면 짧은 밑줄만 쓰기 때문에 남은 짧은 밑줄의 개수가 없을 경우에는 긴 밑줄을 붙인다. #include #in..

전체 책의 갯수에서 이미 정렬되어있는 책의 갯수를 빼면 된다. 예를 들어 책이 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..

게임 규칙 : 두 사람이 동시에 0~5의 손가락을 내밀어서 두 손가락의 합이 짝수이면 Mary의 승리, 홀수이면 John의 승리이다. Mary는 파란색 카드에, John은 빨간색 카드에 자신이 내민 손가락의 정보를 기록하였다. 현재 상황 : 테스트케이스 만큼의 게임을 마치고 카드 더미들을 떨어트렸다. 카드의 색이 달라서 색을 보고 누구의 기록인지 알 수 있지만, 순서는 알 수 없다. 이 때, Mary가 확실히 이긴 최소의 게임 수를 구해야 한다. 각 테스트 케이스의 첫 줄은 Mary의 카드이고, 두번째 줄은 John의 카드이다. Mary의 카드를 보면서 짝수이면 John의 카드에서 홀수를 골르고, 홀수이면 짝수를 골라서 Mary가 최대한 많이 지게 한 뒤, 테스트 케이스에서 진 횟수를 빼면 확실히 이긴 ..

주어진 입력의 가장자리에는 치즈가 없기 때문에 (0, 0)에는 치즈가 절대 없을 것이다. 치즈가 전부 녹을 때까지 (0, 0)에서 bfs를 시작하여 치즈를 녹이는 것을 반복하였다. bfs 도중에 치즈를 만나면 continue를 해서 바깥에 있는 치즈만 녹도록 하였다. #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; int r, c; int cheese_size = 0; int last_size = 0; int cnt = 0; int dRow[4] = { -1,0,1,0 ..