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

가장자리에는 치즈가 놓이지 않기 때문에 0,0에서 빈 공간을 bfs로 탐색하면서 바깥쪽 공기를 검사한 뒤 치즈가 바깥쪽 공기와 2개의 면 이상 닿아있다면 녹도록 했다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using int64 = long long; int n, m; int dRow[4] = { -1,0,1,0 }; int dCol[4] = { 0,1,0,-1 }; vector board; vector visited; vector isOut; void..

문제에 써있는대로 구현하였다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; int r, c, t; vector airCleaner(2); int dRow[4] = { -1,0,1,0 }; int dCol[4] = { 0,1,0,-1 }; void SpreadDust(vector& board) { vector tmp(r, vector(c, 0)); for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) {..

처음에 입력을 받고 나무의 나이 순서대로 정렬한다. 봄에는 나이가 적은 순서대로 양분을 먹다가 만약 양분이 부족하면 뒤에 나무들을 전부 죽이고 죽은 나무에서 나오는 양분을 저장하는 배열에 나이/2만큼 저장한다. 이 때 배열의 뒤에서부터 죽였다. 뒤에서 죽이면 O(1)에 죽일 수 있지만 앞에서부터 죽이면 O(n)의 비용이 들기 때문이다. 가을에는 처음에 모든 나무들을 reverse 해서 새로 생긴 나무를 뒤에 push_back으로 놓어주고 모든 작업이 끝나면 다시 reverse 해주었다. 이렇게 하는 이유는 새로 생긴 나무는 나이가 무조건 1이기 때문에 제일 어릴 수밖에 없다. 그래서 처음에 뒤집고 새로 생긴 것을 넣어주고 다시 뒤집으면 따로 정렬을 안해줘도 되기 때문이다. (근데 굳이 이렇게 안해도 될듯..

한 번의 이동에서 이미 합쳐진 블럭은 또 합쳐질 수 없다는 것을 유의해야 한다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; int n; int ans = 0; int dRow[4] = { -1,0,1,0 }; int dCol[4] = { 0,1,0,-1 }; vector dirs; vector MakeCopyBoard(const vector& original) { vector copyBoard(n, vector(n)); for (int i = 0; ..

bfs로 같은 색이 4개이상 이어져있으면 그 부분을 터트려서 빈 공간으로 만들고 다 터지면 밑에서부터 탐색하면서 밑에 빈 공간이 있으면 밑으로 내려오도록 했다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; const int ROW = 12; const int COL = 6; int dRow[4] = { -1,0,1,0 }; int dCol[4] = { 0,1,0,-1 }; vector board(ROW, vector(COL)); vector found..

주사위의 정보를 담는 구조체를 만들어서 주사위 굴리는 것을 시뮬레이션 하면서 문제를 해결하였다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; int dRow[5] = { 0,0,0,-1,1 }; int dCol[5] = { 0,1,-1,0,0 }; struct Dice { int x; int y; int up; int down; int left; int right; int front; int back; }; int main() { ios_base::s..