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

입력받은 순서대로 줄을 세우는데, 작은 수가 앞에 오도록 줄을 세워야 한다. 이때, 이동이 얼마나 일어나는지를 구하는 문제이다. 1. 자신보다 큰 수를 찾는다. 2. 없으면 push_back을 한다. 3. 있으면 중간에 끼워넣고 그 뒤에 있는 수만큼 sum을 증가시킨다. find_if와 람다를 사용해서 문제를 풀어보았다. #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; int main() { ios_base::sync_with_stdio(false); cin.tie(NU..

남서쪽이 (0, 0)이고 남동쪽이 (N-1, 0)이라고 했으니 ↓→↑← 순서로 돌아야 한다. 쭉 직진하다가 벽을 만나면 저 순서대로 도는 것을 반복하다가 만약 사방이 막혀있거나 이미 방문한 곳이라면 그곳이 나선이 끝나는 곳이다. #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; int dRow[4] = { 1,0,-1,0 }; int dCol[4] = { 0,1,0,-1 }; int main() { ios_base::sync_with_stdio(false); cin.tie..

주어진 입력의 가장자리에는 치즈가 없기 때문에 (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 ..

각 모양마다 모양의 맨 밑이 바닥과 얼마나 떨어져있는지를 모양의 정보로 저장해서 맵의 높이 - 모양의 맨 밑 값을 뺀 값이 모두 같으면 그 자리에 놓을 수 있다고 생각하는 식으로 문제를 해결하였다. #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; int c, p; vector shapes(8, vector()); vector ans(8, 0); void Init() { shapes[1].push_back("0"); shapes[1].push_back("0000"); sh..

1. 문자열들을 입력받아서 길이가 긴 게 앞에 오도록 정렬한다. 2. 맨 앞에 있는 2개의 문자열의 길이가 제일 길다. 하나를 a, 다른 하나를 b라고 한다. 3. a가 접두사라고 가정했을 때는 a 에 b의 마지막 문자를 붙여 완전한 문자열을 만든다. (b가 접두사라고 가정했을 때는 반대로) 4. 3에서 구한 완전한 문자열 두가지 경우에 대해서 나머지 문자열들도 검사를 해서 맞는 경우가 정답이다. (둘 다 맞으면 아무거나) #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll;..

백트래킹을 이용하여 가능한 모든 경우를 구해서 나온 값을 set에 넣는데, 문자의 순서는 상관 없기 때문에 중복을 피하도록 구현했다. #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; int n; int values[4] = { 1,5,10,50 }; unordered_set s; void BT(int idx, int cnt, int sum) { if (cnt >= n) { s.insert(sum); return; } for (int i = idx; i < 4; i++) ..