출처: 84. Largest Rectangle in Histogram (tistory.com) 84. Largest Rectangle in Histogram 소스 코드는 여기 있습니다. 문제는 여기 있습니다. Problem Given an array of integers heights representing the histogram's bar height where the width of each bar is 1, return the area of the largest rectangle in the histogram. Example 1: jaime-note.tistory.com 개인적으로 이 문제에 대해 질 좋은 코드와 예시가 적혀있어서 이 블로그의 코드를 참고했습니다. 문제: Largest Rectan..
TIL
다형성이란? 같은 타입이지만 다양한 동작을 수행할 수 있는 능력이다. 개념만봐서는 무슨 소린지 확실히 알 수 없다. 하지만 이러한 상속에서의 다형성을 잘 표현할 수 있는 기능이 두 가지가 있다. 그것이 바로 virtual 과 abstract 기능이다. virtual abstract 둘의 공통된 기능은 부모의 기능을 물려받아 자식 class에서 기능을 재정의 할 수 있다는 것이다. 여기서 두 기능의 차이점을 설명하자면 virtual은 메인에서 코드를 실행할 때 virtual이 사용된 부모에게 가서 자식이 재정의 돼있으면 그 기능을 사용하고 아니면 부모의 기능을 사용한다. 즉, 자식class에서 재정의가 강제되지 않는다. abstract는 기능을 상속받은 자식class는 부모의 기능을 무조건 구현해야만 한다..
시간복잡도 순서 : O(1) -> O(log n) -> O(n) -> O(nlogn) -> O(n^2) 1. O(1) print와 단순 변수 대입의 경우에 O(1)의 복잡도를 가진다. 단, 특수 케이스로 for문이 if문으로 감싸고 있다면 그건 O(n)이 아닌 O(1)로 취급한다. why? 조건에 따른 변수 대입으로 가정하기 때문이다. 2. O(logn) 예를 들어 2의 제곱을 계속 진행했을 경우 n의 값에 도달한다면 log2n, 제곱수로 목표에 도달하기 때문에 O(n)보다 훨씬 빠르다 . 3. O(n) for문이 하나가 있을 경우에 O(n)의 복잡도를 가진다. 4. O(nlogn) logn을 n번만큼 하는 복잡도, O(n^2)대신 O(nlogn)을 만들 수 있다면 엄청난 성능향상을 기..
그래프를 기반으로 하는 알고리즘은 DFS, BFS, Dijikstra등이 있다. 정해진 틀 안에서 최소 거리를 구하고싶다 = BFS(너비 우선 탐색) 최소 거리를 구하지만 가중치를 부여하여 특정한 최소 거리를 구하고 싶다 = Dijikstra(다익스트라) 모든 경로를 탐색하고 싶다 = DFS(깊이 우선 탐색)
일반적인 큐에서 값을 정렬(내림차순)하고 싶을 때 쓸 수 있는 방법이 우선순위큐다. 이 우선순위큐의 작동 방식은 이진트리의 힙알고리즘으로 진행된다. 삽입 : 가장 끝 자식 노드에 삽입 되어 부모와 자신의 값을 비교하여 크다면 올라가고 작다면 그 곳에 머무른다. 삭제: 부모노드를 먼저 pop한 후(최대값), 큐의 가장 끝 노드를 부모에 삽입 후 역으로 값을 자식과 비교하며 내려간다. 부모의 값보다 자식노드의 값이 클 경우 교체를 한다. 만약 부모노드보다 자식노드 두개가 더 클 경우 자식 노드 중 큰 값과 부모노드가 교체된다. 힙 알고리즘의 개념을 잘 알수있다면 우선순위큐의 작동방식을 이해하기 쉽다.
클래스들의 인스턴스를 하나만 생성해서 전역적으로 접근할 수 있는 패턴 주로 Unity의 GameManager를 싱글톤 인스턴스라고 부른다. 여기서 주의할점은 싱글톤 인스턴스를 두개 이상 만들면 안된다는 것이다. 왜냐하면 싱글톤 인스턴스에는 매우 중요한 기능들이 다수 포함됐기 때문에 이것이 중복될 경우 수 많은 오류가 발생할 수 있다. 싱글톤 인스턴스를 사용할 때는 'I' 를 사용하여 접근하면 된다.
TimeScale 이란 게임 시간이 현실 시간에 대비하여 흘러가는 속도를 말한다. 즉 TimeScale을 1.0으로 설정해 놓으면 게임 시간과 현실 시간이 같다는 것이다. 주로 gameManager의 Start 부분에 timescale = 1.0f로 설정한다. 그 이유는 게임의 메인 화면을 다시 로드 해야할 경우 다시 게임이 진행되야 하기 때문이다. 예를 들어 end 버튼을 구현 하여 timescale을 0f로 설정하고 다시 메인 화면을 로드했을 경우 Start함수가 다시 호출되며 메인 화면이 실행될 수 있게한다.
instantiate : Gameobject를 복사하여 생성한다. Destroy : Gameobject를 삭제한다. Gameobject : 현재 화면에 있는 오브젝트 들, 주로 prefabs에 있는 것들을 말한다. instantiate를 사용하여 원하는 위치에 복사하고 싶은 경우엔 new Vector3를 이용하여 x, y, z 값을 설정 해주면 그 위치에 무조건 생성된다. 즉, 이 복사된 오브젝트의 위치를 한번더 transform.position으로 바꿔도 생성 자체는 처음에 설정한 위치에서 생성된다. Destroy는 슈팅게임의 탄알을 예로 들자면, 탄알을 쏘면 화면 박으로 탄알 오브젝트들이 나가기 시작한다. 이 때 화면에서는 없어진 것으로 보이지만 사실 화면을 벗어나 그대로 날라가고 있는..