본문 바로가기
728x90

전체 글66

[백준 14940] 쉬운 최단거리 문제 https://www.acmicpc.net/problem/14940 문제 분석 지도의 크기가 우선 정해진다. 갈 수 없는 곳은 0, 갈 수 있는 곳은 1, 시작 위치는 2로 표시 된다. 2에서 시작하여 좌우양옆으로 방문한 순서를 출력해주는 문제이다. 여기서 갈 수 있는 곳 1인 곳인데 갈 수 없는 곳이라면 -1로 출력한다. 알고리즘 설계 우선 지도의 크기를 정해서 지도를 그린다. 시작 위치는 따로 관리하며 지도엔 0으로 표시한다. 갈 수 있는 곳은 -1로 표시하여 나중에 1번쨰로 도착한 곳과 헷갈리지 않도록 해준다. 이후 BFS를 사용하여 몇번쨰에 도착하였는지 map에 적어준 후 출력한다. 유의점 x축과 y을 착각하지 않고 적는 것이 중요하다. 코드 #include #include using nam.. 2023. 10. 18.
[백준 16928] 뱀과 사다리 게임 문제 https://www.acmicpc.net/problem/16928 문제 분석 1이라는 위치에서 100이라는 위치로 이동하는 문제이다. 다만 주사위로 1~6칸을 갈 수 있으며, 사다리와 뱀이라는 변수가 존재한다. 사다리는 작은 수에서 큰 수로 올라가며, 뱀은 큰 수에서 작은 수로 내려오는 형태이다. 이 문제는 BFS로 풀 수 있다. 알고리즘 설계 방문을 확인할 vector 또는 배열, 사다리 및 뱀을 체크할 vector 또는 배열을 만든다. 이후 사다리와 뱀을 입력받아 연결 시켜준다. 1에서 시작하며 추가로 1 ~ 6을 더하여 계속 방문 확인할 배열과 queue에 넣어준다. 주사위 수에 사다리 또는 뱀이 있다면 움직여준다. 100에 도착하면 while에서 벗어나 몇번쨰에 방문하였는지 확인한다. 유의.. 2023. 10. 18.
[백준 10026] 적록색약 문제 링크 https://www.acmicpc.net/problem/10026 문제 분석 R, G, B 총 3가지의 색상이 있고, 각각 구역이 나눠져 있다. 나눠진 구역이 총 몇개인지 세는 문제이다. 여기서 적록색약이 아닌 사람이 봤을땐 R, G, B 모두 나누어져 있지만, 적록색약인 사람이 본다면 R과 G는 하나의 구역으로 생각 하면 된다. 알고리즘 설계 이중 vector을 사용하여 판을 구성하고, 입력 받는다. 적록색약이 아닌 사람과 적록색약인 사람이 보는 함수를 따로 만들어준다. 이후 BFS을 사용하여 탐색해준다. 코드 #include #include #include using namespace std; int loop, first = 0, second = 0; vector map; int addX.. 2023. 10. 18.
[백준 24479] 알고리즘 수업 - 깊이 우선 탐색 1 https://www.acmicpc.net/problem/24479 문제 분석 입력 받아 그래프를 만들고 DFS로 탐색을 하고, 탐색 순서를 기록하여 출력하는 형식에 문제이다. 이 문제는 DFS만 알고 있다면 딱히 문제 없이 풀 수 있을 것이라고 생각된다. 코드 #include #include #include using namespace std; vector graph; vector visited; int result[100001]; int cnt = 0; void DFS(int index); int main() { int n, m, r, input1, input2; cin >> n >> m >> r; graph.resize(n + 1); visited.resize(n + 1, false); while .. 2023. 8. 1.
[백준 1260] DFS와 BFS https://www.acmicpc.net/problem/1260 문제 분석 입력을 받아 그래프를 만들고, DFS로 탐색 하였을때와 BFS로 탐색하였을때 각각 출력해주는 형태의 문제이다. 이 문제는 DFS와 BFS를 이해하고 있다면 문제 없을거라고 생각한다. 코드 #include #include #include using namespace std; void DFS(int index); void BFS(int index); vector graph; vector visited; int n, m, v; int main() { int input1, input2; cin >> n >> m >> v; graph.resize(n + 1); visited = vector(n + 1, false); while (m--).. 2023. 8. 1.
[백준 11724] 연결 요소의 개수 https://www.acmicpc.net/problem/11724 문제 분석 간단한 DFS활용 문제이다. 입력을 받아 그래프를 만들고, 그래프를 이루고 있는 덩어리가 몇개인지 세는 형태의 문제이다. DFS를 이해했다면 무리 없이 풀 수 있는 문제라고 생각한다. 코드 #include #include using namespace std; static vector A; static vector visited; void DFS(int v); int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int N, M; cin >> N >> M; A.resize(N+1); visited = vector(N+1, false).. 2023. 8. 1.
[알고리즘 이론] DFS와 BFS 더보기* DFS와 BFS 이해 전 그래프에 대한 이론을 알고 있다면 도움이 될 것이다.   DFS 깊이 우선 탐색(Depth-First Seartch)는 그래프 완전 탐색 기법 중 하나이다. DFS는 그래프의 시작 노드부터 시작하여 탐색할 분기를 정하고, 끝까지 탐색 후 다음 분기로 넘어가서 다시 탐색하여 모두 다 탐색하는 알고리즘이다.   DFS는 Stack 또는 재귀함수를 이용하여 구현할 수 있으며 시간 복잡도는 O(노드 수 + 에지 수)이다. 재귀함수를 사용할떈 스택 오버플로를 조심하며 사용해야한다.   우선 이런 그래프가 있다고 가정해보자. 이 그래프를 인접 리스트로 표현한다면 아래처럼 표현 할 수 있다.  1) 1부터 시작한다고 가정하고 1을 Stack에 넣음과 동시에 1이 들어 왔다는 것을 체.. 2023. 8. 1.
20230327 - 엔진 - Navigation Navigation Agents - Name : 객체의 이름 - Radius : 객체의 크기 - Height : 객체의 높이 - Step Height : 올라갈수 있는 높이 - Max Slope : 올라갈 수 있는 경사도 Bake Agents와 비슷하지만 실제 맵에 갈 수 있는 곳 그려 Nav Mesh Obstacle - Curve : Nav Mehs에 영향을 줄지 선택하는 것 - Carve only Stationary : 선택하면 움직일때는 Bake하지 않음. 체크할시 연산이 많이 됨 미리 받아둔 오브젝트의 위치로 가게 되는 코드 using UnityEngine; using UnityEngine.AI; public class ChaseNavAgent : MonoBehaviour { [SerializeF.. 2023. 3. 29.
UNITY - TimeMap - 기초 우선 이 포스팅에서 사용한 에셋은 아래에 있는 에셋이다. https://limezu.itch.io/modernoffice Modern Office - Revamped - RPG Tileset [16x16] by LimeZu Top-down tilesets to create your office and work areas limezu.itch.io 우선 스프라이트들을 유니티 Project창에 넣어준다. 이후 스프라이트를 선택한 후 Inspector에서 설정을 바꿔준다. Sprite Mode를 Multiple로 바꿔 한 사진에서 여러개로 쪼개서 여러장의 사진으로 사용할 수 있게 해준다. Pixel Per Unit은 한 유닛에 몇개의 픽셀을 표시할건지 선택하는 것이다. 지금은 16으로 해주었지만 선택한 Spr.. 2023. 3. 22.
20230320 - 엔진 - Combo, Rolling 우선 AgentMovement에 SetRotation함수를 추가해주고, 매개 변수에 따라 보는 곳이 달라지도록 해주는 코드를 작성한다. public void SetRotation(Vector3 targetPos) { Vector3 dir = targetPos - transform.position; dir.y = 0; transform.rotation = Quaternion.LookRotation(dir); } 이후 AgentInput에서 Rolling시킬 키를 만들어준다 private void UpdateRollingInput() { if (Input.GetButtonDown("Jump")) { OnRollingKeyPress?.Invoke(); } } 이후 AttackState를 수정하여 Rolling.. 2023. 3. 21.
깃허브 구글 확장프로그램 추천 1. GitHub Repository Size GitHub Repository Size Automatically adds repository size to GitHub's repository summary chrome.google.com 이 확장 프로그램은 리포지터리의 파일 용량을 볼 수 있다. 2. GitHub Isometric Contributions GitHub Isometric Contributions Renders an isometric pixel view of GitHub contribution graphs. chrome.google.com 잔디라고 보이는 각자가 그날에 얼만큼 커밋, 풀리퀘 등을 볼 수 있는 것을 3D로 볼 수 있다. 3. File Icons for GitHub and Git.. 2023. 3. 16.
20230315 - 엔진 - RayCast, 애니메이션 우선 Animator창에서 Sub-State Machine을 만들어준다. Animator의 Layers와 비슷한 역할을 한다고 보면 되지만, 1개의 Layer에서 1개의 에니메이션만 실행이 된다고 생각해둬야한다. 약간 비슷한 것들 모아두고 관리 편하게 하는 용도로 쓰면 좋을거 같다. 이후 저번에 만들어둔 AgentAnimator에 아까 만든 Parameter에 대응하기 위해 추가해준다. private readonly int _attackHash = Animator.StringToHash("attack"); private readonly int _isAttackHash = Animator.StringToHash("is_attack"); public event Action OnAnimationEndTrigg.. 2023. 3. 16.
728x90