아키텍처의 지향은 스크립터블 오브젝트이다(유니티에서). 뭔소리인가?? -> 좋은 아키텍처란 모듈화에서 온다. 기능을 잘게 세분화하는 게 중요한데, MonoBehav는 최소한의 프로퍼티를 명시하고, 참조하는 시점과 조건의 틀만 정의한다. 즉 틀에 프로퍼티를 넣는 역할만 한다. 프로퍼티가 기능을 정의하려면 Mono로 만든 system, 컴포넌트, 스크립터블 오브젝트가 필요하다. 여기서 아키텍처는 SO를 선호한단 소리다. 이점이 뭘까 - mono만 작성해주면 되는 데 프로퍼티에 대한 SO를 따로 만들면 귀찮을 수도 있다. 하지만, 초기화 작업, 수정 작업은 인스펙터 창에서 가능하고, 확장 작업은 신규가 아닌 기존 소스재사용과 에셋생성으로 한다. 모두에게 언제든지 참조 가능한 인스턴스이므로 유연하다. 모듈화/ ..
1. 지역변수를 선언 할때는 var가 더 낫다. 그렇다면 var를 무작정 사용하면 타입 선정하는 데 걸리는 시간이 늘어나 컴파일 타임에 악영향을 주는게 아닐까? - 암시적으로 변수를 선언한 코드가 더 잘 읽힌다. 변수의 의미 자체에 더 집중할 수 있다. 하지만 변수의 타입 정보가 필요할 때, 정확하게 유추할 수 있도록 코드를 짜는 편이 좋다. 예를 들어, JSON object의 경우 타입 자체에 대한 정보가 아닌 그에 담긴 데이터가 중요한경우가 많으므로 var로 선언 해주는 것이 좋다. 또한, 내장 숫자 타입을 리턴하는 메서드의 경우 메서드 이름에 숫자 타입이 적혀있지 않다면 해당 메서드가 출력하는 리턴값의 타입이 어떤 것인지 확신할 수 없다. 따라서 내장 숫자 타입 같은 경우엔 var보다는 명시적으로..
문제 설명 H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다. 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요. 제한사항 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다. 논문별 인용 횟수는 0회 이상 10,000회 이하입니다. 입출력 예 citations ret..
문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 제한 사항 numbers의 길이는 1 이상 100,000 이하입니다. numbers의 원소는 0 이상 1,000 이하입니다. 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다. -> 여러가지 방법이 있다. 각 문자열을 더해줘서 숫..
문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 1. 주어진 배열을 주어진 범위로 자르고, 2. 정렬하여. ..
제네릭의 제약 조건은 크게 두가지 역할을 한다고 볼수 있다. - 런타임 오류를 컴파일 오류로 발생하도록 바꿔준다. - 타입매개변수를 규정해 사용자에게 도움을 준다. 이때, 요구작어보이에 그 타입이 어떤 작업을 하는 지 기능이 있는 지, 신경을 쓰지 않지만, IDisposable을 구현할 경우 특별한 작업이 추가적으로 필요하다. 제네릭 메서드 내에서 타입 매개변수로 주어지는 타입을 이용하여 인스턴스를 생성할 경우 -> 타입 매개변수에서 IDisposable을 구현하고 있을 때 만약, 매개변수 타입의 인스턴스를 생성할 때, (T 변수명 = new)일경우 이타입의 메소드를 불러올 때, IDisposable을 체크해주지 않는다면, 리소스 누수가 일어날수있다고 한다. (using 변수명 as IDisposable..
제네릭을 사용하게 되면, 코드가 간결화 되지만, 타입을 제네릭화하면 그타입이 주는 특성을 잃어 버리게 된다. 그 특징을 활용하여 알고리즘을 최적화하는 게 좋다. => 타입 매개변수로 지정될 가능성이 있는 친구들에 대해 특화된 기능을 최대한 활용해 제네릭을 만들어 준다. 예시로, IList가 타입 매개변수로 들어오게 되면 IList일 경우 이런이런 기능을 쓰겠다고 해준다. 이렇게 함으로서 코드의 재사용성이 높아지고, 개별 타입에 대해 최적화된다. 실 예제를 자성할 필요가 있을 듯 하다..
이전에 싱글턴에 대해서 알아봤는 데, 간단히 말해 하나의 intance 만 만들어 놓고 여기저기서 가져오기 위한 패턴이다. 하지만, 싱글턴을 사용하고자 하는 클래스마다 싱글턴을 만들기엔 여러 문제가 있었고, 코드도 복잡하다. 또한, 싱글턴 패턴의 남용을 장려하지 않기 때문에, 잘 생각하고 만들어야한다. 유니티에서 싱글턴 클래스들을 한 곳으로 모아놓고 관리하는 게 편한데, 이를 위해 제네릭을 통한 싱글턴을 만들고자 한다. public class Singleton : MonoBehaviour where T : MonoBehaviour { private static T _Instance; public static T Instance { get { if (_Instance == null) { _Instance ..