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

뱀이 이동할 때마다 위치를 큐에 넣고, 보드의 정보를 갱신해준다. 만약 이동한 위치에 사과가 없다면 몸의 크기는 그대로 유지해야 하기 때문에 pop을 해주고 pop한 위치를 아무것도 없는 칸으로 바꿔준다. 사과가 있다면 몸의 크기가 늘어나기 때문에 pop을 하지 않고 진행하면 된다. 그리고 회전 정보를 이용하여 뱀을 회전시키고, 다음 위치가 자신의 몸이거나 벽이면 반복문을 종료한다. #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; int n, k, l; vector bo..

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

괄호 관련 문제가 나오면 거의 대부분은 스택 자료구조로 푼다고 생각하면 된다. 우선 문자열에 있는 문자들을 스택에 차례로 넣기 시작한다. 차례로 넣다가 스택의 top이 '{'이고 다음으로 넣을 문자가 '}'라면 안정적인 문자열이기 때문에 pop을 해주고 문자를 넣지 않고 넘어간다. 이런 방식으로 스택을 다 채운 뒤 위에서 2개씩 빼가면서 만약 2개가 '{', '{' 이거나 '}', '}'이면 하나만 뒤집으면 안정적인 문자열이기 때문에 cnt를 1 증가시킨다. 만약 2개가 '}', '{' 라면 둘 다 뒤집어야 안정적인 문자열이기 때문에 cnt를 2 증가시킨다. 이런 방법으로 스택이 빌 때까지 반복하면 답을 구할 수 있다. #include #include #include #include #include #i..

아직 다리 위에 올라가지 않은 트럭을 저장하는 큐와 다리 위에 올라간 트럭을 저장하는 큐 이렇게 큐를 두 개 만들어서 while문 안에서 시간을 1씩 증가시키면서 1초마다 할 수 있는 가장 효율적인 행동을 찾아가면서 문제를 해결하였다. 다리 위에 올라간 트럭을 저장하는 큐는 pair 형식으로, 트럭의 무게와 다리 위에 올라간 시간을 저장하였다. 그리고 트럭이 모두 도착하면 while문을 종료하였다. #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; queue ready; ..

백준에서는 입력이 파일로 들어오기 때문에 EOF를 읽게 되면 입력이 종료된다고 한다. 그래서 while (getline(cin, str))을 사용하면 된다. 맵 자료구조는 자동으로 정렬이 되기 때문에 입력받은 정보를 map를 이용해 value값을 증가시켜주기만 하면 된다. #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); map m; ..

스택 자료구조를 이용하여 해결할 수 있는 문제이다. 줄이 6개라고 했으니 스택을 담고있는 벡터를 6개 만들고 각각의 줄을 따로 계산하여 해결하였다. 줄과 프렛을 입력받았을 때 해당 줄에 멜로디가 없거나 입력받은 프렛이 현재 줄의 멜로디보다 높을 경우에는 프렛을 줄에 넣어주고 cnt를 1 증가시켜주었다. 입력받은 프렛이 줄의 멜로디와 같을 경우에는 손가락을 바꿀 필요가 없으므로 아무 행동도 하지 않았다. 입력받은 프렛이 줄의 멜로디보다 작을 경우에는 멜로디가 프렛보다 작거나 같아질 때 까지 손가락을 떼주면서 cnt를 1씩 증가시켜 주었다. 그 후 멜로디가 프렛과 같을 경우에는 아무 행동도 하지 않았고, 멜로디가 프렛보다 작거나 남아있는 멜로디가 없을 경우에는 프렛을 줄에 넣어주고 cnt를 1 증가시켜주었다..