전체 글(75)
-
[백준] 1699번: 제곱수의 합
다이나믹 프로그래밍 문제이다. 처음 생각했던 접근방식(오답) 간단한 DP문제일 것이라고 생각하고 익숙한 방식대로 생각했었다.예를 들어서 11은 3^2 + 1^2 + 1^2, 즉 3이 최소 항의 개수이고 1^2 + 1^2은 2의 최소 항의 개수인 2다.13은 3^2 + 2^2 + 2^2, 즉 3이 최소 항의 개수이고 2^2 + 2^2은 4의 최소 항의 개수인 2이다. 따라서 11에 가장 가까운 제곱수를 찾은 후 (FindMinSquare), -> 항 1개구하려는 N에서 그 제곱수를 빼고 나머지는 memoization을 활용하면 된다고 생각했었다. -> dp[i-pow(minSquare,2)] 그리디 + DP 방식이였는데 이 방식은 틀렸다. 최대 제곱수를 선택하는 방식이 항상 최적의 해를 보장하지..
2025.03.20 -
[백준] 10844번: 쉬운 계단 수
다이나믹 프로그래밍 문제이다. 합당한 접근방식 이 문제도 처음 봤을 때 식을 어떻게 써야할지 난감했다.후회되는 점은 N=3인 케이스부터 적어서 패턴을 찾는데 시간이 오래걸렸다.오히려 N=1, N=2, N=3.. 차근차근히 케이스를 써내려갔다면 풀이에 근접했을 수도 있었다.. 1. N=1 이라면1, 2, 3, 4, 5, 6, 7, 8 ,9 가 가능하다. 2. N=2 라면10, 21, 32, 12, 43, 23, 54, 34, 65, 45, 76, 56, 87, 67, 98, 78, 89.....옆 자리수와 1이 차이나야 한다. 여기서 섬세하게 바라보면,- 마지막 수가 0이면 왼쪽에 있는 수는 무조건 1 - 마지막 수가 9라면 왼쪽에 있는 수는 무조건 8 이어야 한다. (물론 두자리 수에서는 ..
2025.02.12 -
[백준] 2156번: 포도주 시식
다이나믹 프로그래밍 문제이다. 처음 생각했던 접근 방식 오랜만에 DP 문제를 시도해봤는데 역시 어김없이 "어떻게 점화식을 세워야 하지?"라는 의문이 생겼다.DP 시도할 때마다 드는 익숙한 고민이다. 그나마 어느정도 풀어본 경험이 있어서dp[i] = "i번째까지 선택했을 때 최대 포도주의 양" 이라고 방향을 잡았다. 여기서 해결해야 하는건 "연속된 3잔은 마실 수 없다" 였고, 이 것을 어떻게 풀어야 할지 어려웠다.고정관념이 있었던 것이, dp[i]를 "i번째까지 선택"했다는 것을 가정했기 때문에 더 안풀렸던 것 같다. 합당한 접근방식 DP 문제 풀 때는 항상 기억하자. "각 단계에서 가능한 선택지를 모두 나열하는 방식이 도움이 된다." 어떻게 깔끔하게 식을 세울 수 있을까를 먼저 ..
2025.02.10 -
[코드트리] 마법의 숲 탐색 (S기출)
합당한 접근 방식 골렘의 위치가 특정 조건에 따라서 배치되기 때문에 2차원 맵 시뮬레이션 문제이며정령이 길을 찾아서 최대한 밑으로 내려가야하므로 탐색(BFS) 문제인 것을 깨달았다. 코린이 시절 (지금도..) 처음 이 문제를 풀었을 때는 골렘을 배치하는 것 조차 어려웠었다.그 이유는 골렘이 회전하는 방식이나, 골렘이 범위 밖을 벗어나는 것을 매우 정직하게 구현했기 때문이다. 1. 골렘이 맵을 벗어나지 않게끔 구현하는 방법:- 맵의 크기가 R*C라고 해서 R*C만 할당할 필요가 없다.- R*C 범위 밖을 넘어가는 것을 막기위해 일일이 범위 체크하기보단 바깥을 1로 설정하고, 안을 0으로 설정했다.- 골렘이 맵에 들어오지 못하고 상단에 걸치는 경우를 대비해 3칸의 여분을 더 설정했다.- 따라서 골렘은 0..
2024.10.11 -
[UE5] 컴포넌트 디자인 패턴: 기본 전투
언리얼 엔진 C++ 공부중이며 건설적인 비판이나 수정사항 요청은 언제든지 환영합니다! 컴포넌트 디자인 패턴 코딩을 오랫동안 배운 사람이라도,어떠한 객체지향 프로그램을 제대로 만들어보지 않은 사람이라면,어떤 객체를 구현할 때 가질 수 있는 기능을 모두 클래스 안에 넣는 경우가 생긴다. 아니면 조금 만들어본 사람이라면 오버로딩이나 오버라이딩 등 상속을 잘 활용하는 경우도 있지만,그것만으로는 프로젝트의 유연성을 보장해주지는 못한다. 다음 예를 보자: 게임에서는 대부분 캐릭터와 몬스터(적)이 있다.각각은 체력, 공격력, 움직임 등의 성질이 있는데, 이 세가지 성질을 구현하는 좋지 않은 방법은 위의 두가지이다. 1. 첫번째는 캐릭터와 몬스터 각각의 클래스 안에 모든 성질을 일일이 다 구..
2024.09.12 -
[UE5](C++) 아이템, 무기 픽업
언리얼 엔진 C++ 공부중이며 건설적인 비판이나 수정사항 요청은 언제든지 환영합니다! RPG 게임에서의 핵심적인 요소 중 하나인 아이템 픽업을 구현해보았다.아이템 픽업을 구현하는 방법은 여러가지가 있겠지만,내가 구현한 방식은 델리게이트, 콜리전 프로파일, 소켓, 오버라이딩에 대한 이해가 필요하다. 델리게이트를 활용한 충돌 이벤트 우선, 아이템 클래스를 만든다. 필자는 cpp 클래스의 이름을 MyItem로 정했다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344// Fill out your copyright notice in the Description page of Project ..
2024.09.04