본문 바로가기

전체 글

(233)
[BOJ 11725/C++] 트리의 부모 찾기 미숙한 블로그 주인이 코딩테스트 문제를 풀어가는 과정을 담은 글입니다. 이 풀이가 효율적인 풀이가 아닐 수 있으며, 부정확한 정보가 많이 있을 수 있습니다. 보완해야할 점이 있다면 댓글로 남겨주세요! https://www.acmicpc.net/problem/11725 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net 트리의 부모 찾기 문제 문제 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 노드의 개수 N (2 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N-1개의 줄에 트리 상에..
[UE5] 비헤이비어 트리(Behavior Tree) 이 글은 언리얼엔진 5.0.3 버전을 기준으로 작성되었습니다. 다른 버전과는 차이점이 존재할 수 있습니다. 게임에서 인공지능은 여러 가지 역할을 맡습니다. 때로는 플레이어에게 도움을 주는 아군의 역할을 맡기도 하고, 때로는 플레이어를 공격하는 적군의 역할을 맡기도 합니다. 아군 AI와 적군 AI는 실제 플레이어가 플레이하는 것처럼 '똑똑한' 인공지능이 되어야 합니다. HP가 다 떨어져 가는데 바보같이 계속 맞기만 하거나, MP가 다 떨어졌는데 계속 스킬을 시전 하려는 인공지능이라면 사람들은 '멍청한' 인공지능이라고 평하면서 결국에는 게임성을 떨어뜨리게 됩니다. 이런 멍청한 AI를 피하고 똑똑한 AI를 만들기 위해서 여러가지 방법들이 많은데, 언리얼 엔진에서는 비헤이비어 트리(Behavior Tree)와 ..
[UE5] CastleRPG(5) - 몬스터 AI 이 글은 특정 툴을 소개하거나, 사용법, 꿀팁 공유 등을 하는 것이 아닌, 협동 프로젝트 진행 과정을 단순하게 저장해놓은 글입니다. 이러 이러한 것들을 썼지~ 이러 이러한 과정이 있었지 ~ 라는 것을 기억해두기 위해 남겨놓은 글일 뿐입니다. 시험 기간이 겹치고, 과제들을 처리하다 보니 진행사항을 기록하는 것이 많이 늦어졌습니다. 한달간 진행된 사항들을 요약하자면, 몬스터 AI의 구현입니다. 이런 느낌의..! 비헤이비어 트리를 제작하여 몬스터의 행동을 정의해주었습니다. 서브트리들은 각각, 너무 먼 거리를 이동해서 특정 영역을 벗어났으면 복귀하기, 순찰돌기, 플레이어 추격하기, 공격하기입니다. 협업자가 UI 제작을 진행하는 동안, 저희가 쓸 맵에서 네트워크 환경 상에서 잘 작동하는지를 테스트했습니다. 이 네..
[BOJ 1967번/C++] 트리의 지름 미숙한 블로그 주인이 코딩테스트 문제를 풀어가는 과정을 담은 글입니다. 이 풀이가 효율적인 풀이가 아닐 수 있으며, 부정확한 정보가 많이 있을 수 있습니다. 보완해야할 점이 있다면 댓글로 남겨주세요! https://www.acmicpc.net/problem/1967 1967번: 트리의 지름 파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연 www.acmicpc.net 트리의 지름 풀이 무언가 엄청 큰 다른 방식을 요하는 문제인가... 싶었는데, 참으로 간단(?)하게도 DFS를 이용해서 쉽게 풀 수 있는 문제였다. 1. DFS를 이용해 1에서 가..
[BOJ 12851번/C++] 숨바꼭질 2 미숙한 블로그 주인이 코딩테스트 문제를 풀어가는 과정을 담은 글입니다. 이 풀이가 효율적인 풀이가 아닐 수 있으며, 부정확한 정보가 많이 있을 수 있습니다. 보완해야할 점이 있다면 댓글로 남겨주세요! https://www.acmicpc.net/problem/12851 12851번: 숨바꼭질 2 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net 숨바꼭질 2 풀이 이전에 풀었던 문제인 숨바꼭질 3의 전편(?) 같은 느낌이다. 숨바꼭질 3에서의 순간이동이 0초였다면, 이곳에서는 1초라고 한다. 이번에는 BF..
[BOJ 16953번/C++] A → B 미숙한 블로그 주인이 코딩테스트 문제를 풀어가는 과정을 담은 글입니다. 이 풀이가 효율적인 풀이가 아닐 수 있으며, 부정확한 정보가 많이 있을 수 있습니다. 보완해야할 점이 있다면 댓글로 남겨주세요! https://www.acmicpc.net/problem/16953 16953번: A → B 첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다. www.acmicpc.net A → B 풀이 이 문제는 탐욕법으로 풀 수 있었다. 문제에서 가능하다고 한 연산을 반대로 생각해서 풀었더니 곧바로 답이 돌출됐다. 1. A에서 2를 곱한다. → B에서 2를 나눈다. 2. A의 가장 오른쪽에 1을 추가한다. → B에서 가장 오른쪽에 있는 1을 빼준다. 1의 연산을 할 수 없을 때, 2의 연산도 할 수 없다면..
[BOJ 1991번/C++] 트리 순회 미숙한 블로그 주인이 코딩테스트 문제를 풀어가는 과정을 담은 글입니다. 이 풀이가 효율적인 풀이가 아닐 수 있으며, 부정확한 정보가 많이 있을 수 있습니다. 보완해야할 점이 있다면 댓글로 남겨주세요! https://www.acmicpc.net/problem/1991 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net 트리 순회 풀이 트리의 순회는 재귀 함수로 구현해주면 간단하게 풀 수 있다. 전위 순회는 루트 > 왼쪽 자식 > 오른쪽 자식 순으로, 중위 순회는 왼쪽 자식 > 루트 > 오른쪽 자식 순으로..
[BOJ 1918번/C++] 후위 표기식 미숙한 블로그 주인이 코딩테스트 문제를 풀어가는 과정을 담은 글입니다. 이 풀이가 효율적인 풀이가 아닐 수 있으며, 부정확한 정보가 많이 있을 수 있습니다. 보완해야할 점이 있다면 댓글로 남겨주세요! https://www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 www.acmicpc.net 풀이 문제 설명에도 잘 나와있듯, 수식은 일반적으로 전위 표기법, 중위 표기법, 후위 표기법으로 나타낼 수 있다. 전위 표기법은 연산자가 먼저, 피연산자가 나중에 나오는 표현법이다. 중위 표기법은..