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

dfs방식을 이용해서 탐색하면서 A에 있는 물의 양이 0일 때 C에있는 물의 양을 저장해가면서 문제를 해결하였다. 탐색을 이미 했는지 확인하는 visited 은 A, B, C 중 2개만 검사하면 나머지는 값이 고정되기 때문에 visited 배열을 2차원 배열로 사용하였다. #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; int visited[201][201] = { false }; int A, B, C; set ans; void solve(int a, int b, int..

D까지 가는 최소 거리를 구하는 문제이다. 역주행은 불가능하다. dp방식으로 해결하였다. 처음에는 거리를 지름길을 고려하지 않고 초기화해주고 지름길들의 도착 위치를 기준으로 정렬한 뒤, 도착 전의 위치들을 검사하면서 도착 위치까지의 최소 거리를 찾아서 지름길을 이용한 최소 거리들을 구하고, 마지막에는 처음부터 D까지 검사하면서 최소 거리를 찾는 방식으로 문제를 해결하였다. 풀고 나서 시작 위치를 기준으로 정렬해도 맞았는데, 이유는 잘 모르겠다. #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef l..

moo 문자열을 간단하게 숫자로 나타내 보겠다. moo는 3, mooo는 4, mooooo는 5 이런 식으로 사용할 것이다. moo 수열은 3 -> 3 4 3 -> 3 4 3 5 3 4 3 이런 식으로 증가하게 된다. n을 입력받아서 n이 수열의 길이보다 크다면 수열의 길이를 규칙에 맞춰서 늘리고, n이 수열의 길이보다 작다면 n의 값을 재조정하고 수열의 길이를 축소해가면서 문제를 해결하였다. 처음에는 직접 수열을 구현해보았는데, 그런 식으로 문제를 풀면 메모리 초과가 난다. 따라서 규칙에 맞춰서 특정 위치의 문자를 구하는 식으로 문제를 해결해야 한다. #include #include #include #include #include #include #include #include #include #inc..

회전시킬 톱니바퀴와 회전 방향을 입력받고 해당 톱니바퀴는 회전시킨 뒤, 회전시키기 전의 톱니바퀴와 맞닿아 있는 톱니바퀴가 같다면 맞닿아 있는 톱니바퀴는 회전시키지 않고, 다르다면 반대방향으로 회전시킨다. 이것을 반복하다가 회전이 끝났을 때 12시 방향에 있는 S극의 톱니바퀴의 개수를 구하는 문제이다. 문제를 푸는데 어려움은 딱히 없었던 것 같은데 시간은 조금 걸린 것 같다. 엄청 쉬운 문제는 아닌 것 같은데 단순히 구현만 하면 돼서 그런지 정답률이 73퍼센트나 된다는게 놀랍다. #include #include #include #include #include #include #include #include #include #include #include #include #include using names..

들어간 차들은 벡터를 이용해 순서대로 문자열을 저장해서 들어간 순서로 차의 번호를 접근할 수 있게 만들었고, 나온 차들은 unordered_map 를 이용해 차의 번호로 나온순서를 접근할 수 있게 만들었다. 들어간 차들을 검사하면서, 자신보다 먼저 들어온 차들 중 하나라도 자기보다 늦게 나왔다면 추월을 한 것이다. 들어간 차들을 순서대로 검사하면서 그 차의 번호를 이용하여 나온 차들의 순서를 접근하여 비교하면 문제를 해결할 수 있다. #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long lo..

문제를 한줄로 요약하자면 가장 긴 증가하는 부분 수열을 구하는 것이다. 다이나믹 프로그래밍으로 해결할 수 있는 문제이다. 처음에 수열의 길이를 저장하는 dp테이블을 모두 1로 초기화 시킨다. (자신만 있을 경우 수열의 길이는 1) 원소들을 처음부터 검사하면서 자신의 앞에 있는 모든 원소들을 비교하다가 만약 자신보다 값이 작은 값을 찾으면 자신이 그 수열에 포함된다면 증가하는 수열의 길이가 늘어나는 것이기 때문에 찾은 값의 수열의 길이 중 가장 큰 값을 저장한다. #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;..