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

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

1. 크레인과 박스들을 내림차순으로 정렬한다. 2. 맨 앞의 박스가 크레인이 감당할 수 있는 무게보다 무거우면 옮길수 없으므로 1을 출력하고 프로그램을 종료한다. 3. 박스가 전부 빌 때까지 크레인을 순회하면서 박스를 순회하면서 (2중 for문) 박스를 담을 수 있으면 박스의 벡터에 erase를 통해 박스를 지워준다. (크레인 한 번 순회하면 cnt++) 위에처럼 풀어도 풀리긴 하지만 박스를 지우는 erase가 시간이 오래 걸린다. 크레인이 500개만 되어도 시간초과가 날 것이다. 그래서 erase를 사용하지 않고 visited를 이용해 이미 담은 것인지를 판별하도록 코드를 수정하였다. #include #include #include #include #include #include #include #in..

_의 개수의 최대값과 최솟값의 차이는 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가 최대한 많이 지게 한 뒤, 테스트 케이스에서 진 횟수를 빼면 확실히 이긴 ..