분류 전체보기 97

백준 15681 트리와 쿼리

이제 bfs는 하겠는데 dfs는 바로바로 써먹으려니 아직 좀 헷갈린다 dfs 재귀호출하거나 스택을 이용해서 사용할 수 있다.  재귀호출 이용시 인접 노드들을 for문으로 방문하면서 그 인접노드에 대해 dfs를 다시 시행해 단말노드까지 도달한다.  스택을 이용할 경우 스택에 인접 노드들을 모두 삽입하고 스택이 empty가 아닐 경우 스택에서 원소를 꺼내 그 노드의 인접노드들을 다시 삽입한다. 후입선출인 스택의 구조를 이용해 넣고 꺼내다보면 깊이우선 탐색을 완료할 수 있다.   트리와 쿼리 성공문제간선에 가중치와 방향성이 없는 임의의 루트 있는 트리가 주어졌을 때, 아래의 쿼리에 답해보도록 하자.정점 U를 루트로 하는 서브트리에 속한 정점의 수를 출력한다.만약 이 문제를 해결하는 데에 어려움이 있다면, 하단..

유니티 2D 맵 -4

씬전환이 이뤄질 때 기존 씬에 있던 객체가 유지 되지 않는 문제가 있다.플레이어 또한 사라지기 때문에  이를 스크립트로 다뤄준다.  moving object 스크립트의 start 함수 안에 dont distroy onroad (game object) 문구를 넣어준다. 씬 전환이 일어나도 게임 오브젝트를 유지한다는 의미이다. 동일하게 카메라 움직임을 담당하는 스크립트에도 문장을 추가해주고, 이동 씬에서 카메라와 플레이어 객체는 없애준다  그러면 이제 이동해도 카메라랑 캐릭터는 살아있는것을 dont distroy 아래에 목록으로 볼 수 있다    그러면 이제 캐릭터가 씬을 이동하는데 그 위치를 지정해주려한다.  이동할 씬에서 start point 객체를 하나 생성해준다 (그냥은 잘 보이지 않으니 박스콜라이더..

유니티 2025.02.17

백준 14003 가장 긴 증가하는 부분 수열5

가장 긴 증가하는 부분 수열 5  문제수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오.예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다.입력첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다.둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (-1,000,000,000 ≤ Ai ≤ 1,000,000,000)출력첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다.둘째 줄에는 정답이 될 수 있는 가장 긴 증가하는 부분 수열을 출력한다. 가장 긴 증가하는 부분 수열 3을 푼 이후라 어떻게 가장 긴 ..

유니티 2D 맵 -3

이제 길이 필요해서 타일을 새로 만들고 길을 깔아줬다.  캐릭터가 이 길 밖으로 벗어나지 않게 하려고 긴 타일 두개를 생성해 적절한 위치에 두고, 앞서 만들어둔 no passing 레이어와 박스콜라이더를 추가해 캐릭터가 특정 범위 안에서만 움직일 수 있게 했다. (울타리 역할을 해주는 타일의 속성)   다른 장소도 추가해야겠다위에 new scene 누르고  그리고 생선된 씬을 save as template 으로 씬 폴더에 저장한다.  그러면 이렇게 씬이 생성된다 동일한 방법으로  타일 생성하고 ,움직일 수 있는 영역도 지정해줬다. 길거리 씬으로 돌아와 transfer 스크립트를 생성한다.빈 객체를 하나 생성하고 거기에 방금 만든 스크립트랑 박스 콜라이더 속성을 준다.캐릭터가 박스콜라이더에 닿으면 맵 이동..

유니티 2025.02.04

유니티 2D 맵 -2

..? 다시 들어가니 타일이 생성되어 있다.이게 무슨. 조금 기다리면 됐었는데 못참았나.? 다시 tiled로 타일 맵 생성해보니 정상적으로 타일이 생성되는 것을 확인할 수 있었다.아무튼 돼서 다행이다.. 그런데 이제 생성된 타일이 캐릭터와 오브젝트를 가려버린다  .. 하그래서 배경의 레이어를 뒤쪽에 둬 물체가 가려지지 않도록 했다.  sorting 레이어가 위쪽에 위치할수록 뒤에 놓인 것처럼 보이게 된다.  그래서 레이어를 생성하고 타일의 sorting 레이어를 background로 설정해 배경이 뒤에 있게 해줬다. 그대로는 좀 심심해 보여서 가로등도 뒤에 놓아줬다.가로등하고 주변 불빛 스프라이트 이미지를 따로 생성해서 가져왔고, 불빛 삽입할 때 투명도를 조절해서 빛처럼 보일 수 있도록 했다. 투명도는 ..

유니티 2025.02.02

유니티 2D 맵 -1

제일 해보고 싶었던 부분이다.캐릭터가 활동할 맵을 제작한다. 유니티에서 맵을 생성하는 방법은 여러가지가 있는데, 그중에서 tiled 라는 프로그램을 이용해서 만들어보기로 했다. https://www.mapeditor.org/ TiledFlexible level editorwww.mapeditor.org  new map 버튼을 눌러 맵을 생성해보자!!!여러 설정을 할 수 있다  orientation 은 타일의 방향 정도..로 생각하면 될듯맵 사이즈에 infinite 말 그대로 무한한 맵을 생성한다는 의미이다..일단 픽스에 48*48픽셀로 생성한다  생성 하면 이런 화면이 뜬다 new tile set로 타일을 가져온다      위에 스탬프 옆에 브러시 버튼이 궁금해서 찾아보니 지형을 만들어주는 도구인듯 했다..

유니티 2025.01.31

유니티 2D 카메라 대상 추적

카메라의 움직임 제어하는 방법 먼저 카메라 움직임을 제어할 스크립트 파일을 만들어준다.  스크립트에 내용을 작성해준다.target은 카메라의 추적 대상this는 스크립트가 부착된, 즉 카메라이다Set함수로 대상의 좌표를 받아와 설정해주고 transform 함수로 this의 좌표를 적용시켜준다     이렇게 카메라가 대상을 따라오는 것을 볼 수 있다!

유니티 2025.01.30

백준 1520 내리막 길

(0,0)좌표부터 (n-1,m-1)좌표까지 도달할 수 있는 모든 경로를 찾는 문제다. 다음 타일의 값이 더 작기만 하면 되는 조건이라 금방 풀 수 있을 거라 생각했다.. 처음에 그냥 bfs로 풀고 답이 나와서 제출하니 시간초과가 나왔다. 이 문제를 해결하기 위해서는 위해서는 dfs + dp로 최적화하여 계산한 다음 값을 내야 한다고 한다.. (문제는 최단 경로를 찾는 것이 아닌 가능한 모든 경로를 찾는 것이므로 bfs보단 dfs를 사용해 푸는 것이 더 낫다고 한다.!) 어떻게 최적화 해야 하는가? 🤔-> 방문한 길을 다시 방문하지 말야아 한다.  그럼 방문한 길을 어떻게 피하는가?-> dp배열의 값을 0이 아니라 음수값으로 초기화하고, 탐색한 dp배열 값이 음수인 경우에만 업데이트를 진행한다. 음수가 ..

백준 9252 Lcs 2

문제LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다.예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.입력첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다.출력첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다.처음에는 vector> answer배열을 만들고dp 배열을 업데이트 할 때마다 같이 값을 업데이트 해줬는데,, 시간초과가 났다. 순회하면서 string 배열을 계속 확인하는데 시간이 좀 걸리나보다;;  그래서 dp배열의 역추적을 이용해 문자열을 구해보기로 하였다. dp 배열..

백준 9251 Lcs

문제LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다.예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다.입력첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다.출력첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다. dp배열을 사용해 풀이한다. 문자열 a b가 주어졌을때 a의 인덱스를 s, b 의 인덱스를 t라 한다.dp[s][t]인 이차원 배열을 사용하는데, 저장되는 값은 각 문자열의 끝을 a[s]와 b[t]라 했을 때 공통되는 부분수열의 최대 길이이다. a[s]==b[t]인 경우에..