전체 글 (27) 썸네일형 리스트형 깊이 우선 탐색(DFS), 너비 우선 탐색(BFS) DFS(Depth First Search)는 루트 노드에서 시작해 자식 노드들을 순서대로 탐색하는 알고리즘으로 노드에서 다음 분기로 넘어가기 전에 해당 분기를 완벽하게 탐색한다. 길찾기 같은 기능을 구현하거나 모든 노드를 방문해야하는 경우에 사용한다. 재귀함수는 스택으로 구현한다. BFS(Breadth First Search)는 루트노드에서 시작해 인접한 노드들을 먼저 탐색하는 알고리즘으로 DFS와는 반대다. 최단경로를 구현할때 사용한다. 큐로 구현한다. 이제 그래프를 만들어서 구현을 해보겠다. vector를 사용해서 위의 그래프를 만들었다. DFS재귀함수를 사용하여 구현했다. bool형 배열로 방문했는지 체크하고 인접 노드들이 방문했는지 체크하여 방문하지 않았다면 재귀적으로 그래프를 탐색한다.결.. 정렬 선택 정렬 (Selection Sort)선택정렬은 요소들 중에서 최솟값이나 최댓값을 찾아 맨 앞의 자료와 교환해나가는 알고리즘이다.요소들 중에서 가장 작은 값을 맨 앞에 요소와 교환한다. 그리고 그 다음 인덱스부터 다음으로 작은 값을 찾아 두번째 자리와 교환한다.배열의 n+1 인덱스부터 순회하여 최솟값을 구한후 swap함수로 n번째 인덱스와 최솟값인 인덱스를 교환한다. 삽입 정렬 (Insertion Sort)삽입정렬은 현재 위치에서 요소들을 비교하여 자신이 들어갈 위치에 삽입하는 배열이다.삽입정렬은 두번째 인덱스 부터 시작하여 임시로 해당 요소를 저장하여 배열의 요소들과 비교한다. 비교한 요소의 값보다 작으면 그 요소의 인덱스 -1 위치에 삽입한다. 버블 정렬 (Buble Sort)버블정렬은 두개의 인접.. 백트랙킹 Backtracking 알고리즘은 해를 찾는 도중 해가 절대 될 수 없다고 판단되면, 되돌아가서 해를 다시 찾아가는 기법이다.모든 경우의 수를 따져가며 해를 찾다가 필요가 없다고 판단되면 그 경우를 배제한다. 이를 가지치기라고 한다.백트랙킹으로 DFS와 BFS 모두 구현이 가능하다. DFS와 BFS는 다음에 더 공부해 보겠다. 예제 - 프로그래머스 피로도https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krcheck라는 배열을 만들어서 방문 체크를 하고 .. Unity_Shader Graph 01 셰이더 그래프를 사용하면 코딩으로 셰이더를 작성하는 것이 아니라 노드 그래프를 기반으로 셰이더를 작성할 수 있다.오늘은 간단하게 처음부터 셰이더 그래프를 만드는 것부터 시작해서 공부해 보겠다. 일단 sphere에 unlit shader graph를 적용시킨 material을 넣었다. 유니티 유튜브채널에 나와있는 튜토리얼을 따라해 보겠다.https://www.youtube.com/watch?v=VvK7sLbbLYE 튜토리얼을 따라하다 내 나름대로 색깔도 HDR로 바꿔보고 텍스쳐도 입혀봤다.그리고 텍스처의 색깔까지 바꿔봤다 fresnel effect를 사용하면 오브젝트의 표면에만 효과를 줄수 있다.https://docs.unity3d.com/kr/2022.3/Manual/StandardShaderFresn.. shader_2 2024.03.20 - [unity] - shader_1이번에는 저번에 공부하던 쉐이더를 이어서 공부해 볼려고 한다. 시간이 지나면 낮하늘에서 밤하늘로 바뀌는 것을 구현해볼려고한다. 텍스처를 하나 더 넣기 위해서 _MainTex2를 만들어 _MainTex와 똑같이 움직임을 줬다.그리고 Albedo를 Emission으로 바꿨다. Emission을 사용하면 빛 반사가 없다.lerp함수는 선형보간인데 lerp(x,y,z) x에서 y로 변경될때 z값 만큼 부드럽게 변경시켜준다.이렇게 밤하늘 텍스쳐를 추가하고 테스트를 해보겠다. 잘되는 것을 보아 이제 게임이 시작하면 자동으로 낮과 밤으로 바뀌게 구현을 해보겠다. 쉐이더 코드에 _change값을 가져와 일정시간 뒤에 값을 바꿔준다. WaitForSeconds는 많.. 유니티 생명주기 유니티 생명주기에 대해 정리하면서 다시한번 공부해보겠다.유니티 스크립트를 실행하면 사전에 지정한 순서대로 이벤트 함수가 호출된다.https://docs.unity3d.com/kr/2019.4/Manual/ExecutionOrder.html 이벤트 함수의 실행 순서 - Unity 매뉴얼Unity 스크립트를 실행하면 사전에 지정한 순서대로 여러 개의 이벤트 함수가 실행됩니다. 이 페이지에서는 이러한 이벤트 함수를 소개하고 실행 시퀀스에 어떻게 포함되는지 설명합니다.docs.unity3d.com Awakestart 함수 전에 호출되며 프리펩이 인스턴스화된 직후 호출된다. 변수 초기화할때 유용하다. OnEnable오브젝트가 활성화 될때마다 호출된다. 활성화 될때마다 호출되기 때문에 이벤트 등을 처리하기 좋다. .. Dictionary 이번에는 Dictionary에 대해 List와 비교하면서 공부를 해보겠다. 리스트는 크기가 동적으로 변경되고 원소의 삽입, 삭제가 용이하다. 동적인 배열이다. 따라서 데이터가 연속적으로 저장된다. c++의 vector와 유사하다. 딕셔너리는 key와 value가 존재하여 이를 이용하여 key를 이용해 value를 찾을 수 있다. 중복된 key값을 허용하지 않는다.내부적으로는 해시 테이블을 사용한다. 해시 테이블은 각 키의 해시 코드를 계산하여 해당 코드에 해당하는 인덱스에 데이터를 저장한다. 검색은 키의 해시 코드를 계산하고 해당 코드에 대응하는 인덱스로 이동하여 값을 찾는다.리스트와 달리 데이터가 연속적이지 않고 유니티의 인스펙터 창과 호환이 안된다. ContainsKey()로 중복키값을 검색할 수 있.. 배열(Array), 리스트(List), 벡터(Vector) 배열https://learn.microsoft.com/ko-kr/cpp/cpp/arrays-cpp?view=msvc-170 배열 (C++)표준 C++ 프로그래밍 언어로 네이티브 배열 형식을 선언하고 사용하는 방법을 알아봅니다.learn.microsoft.com배열은 연속된 메모리영역을 차지하는 동일한 형식의 집합이다. 배열의 인덱스에는 랜덤 접근이 가능하고 컴파일시 크기가 확정되어 크기를 미리 지정해줘야 한다. 배열을 동적으로 할당할수 있다. 리스트https://learn.microsoft.com/ko-kr/cpp/standard-library/list-class?view=msvc-170 list 클래스자세한 정보: list 클래스learn.microsoft.com 리스트는 비연속적인 메모리 구조를 갖는.. 이전 1 2 3 4 다음 목록 더보기