본문 바로가기

전체 글657

트리의 지름 트리의 지름은 트리의 노드들 중 가장 먼 거리를 가지는 두 노드 사이의 거리를 의미합니다. 알고리즘 1. 임의의 노드 x를 선택한다. 2. dfs로 x와 가장 먼 노드(A)를 구한다. 만약 가장 먼 노드가 2개 이상이라면 이들 중 어떠한 것을 선택해도 상관없다. 3. dfs를 한 번 더 돌려서, 노드 A로부터 가장 먼 노드(B)를 구한다. 4. 노드 A와 노드 B의 거리가 트리의 지름이 된다. 노드 사이의 거리인데 최단거리 알고리즘을 돌려야하지 않나?! 싶기도 하지만 "트리"의 지름을 구하고 있음을 유의해봅시다. 트리의 성질 중 "트리의 두 노드 사이의 경로는 하나만 존재한다."가 있습니다. 따라서 dfs 탐색 중에 구해지는 노드 사이의 거리가 최단거리가 됩니다. 참고코드 : github.com/fpdj.. 2021. 2. 21.
[programmers][2021카카오공채] 메뉴 리뉴얼 문제 : programmers.co.kr/learn/courses/30/lessons/72411?language=cpp orders의 모든 문자열을 탐색하며 각 주문들을 먼저 오름차순 정렬 후, DFS를 돌리며 모든 조합을 구한다. 만약 구한 조합 문자열 길이가 courses에 해당된다면 해당 조합을 key값으로 하고 등장횟수를 value로 하는 map(ex, 만약 AC 조합이 2번 등장했으면 map["AC"] = 2)에 갱신한다. ( value + 1) 해당 map을 다 만들었으면 탐색하면서 이번에는 조합의 길이(코스종류)를 key값, 등장횟수와 조합 리스트를 value로 가지는 map을 만든다.(ex, map[2] = [{1, "AC"}]) 이때, 등장횟수가 한 번인 경우는 메뉴가 될 수 없으므로 제.. 2021. 2. 7.
[Java] Annotation Annotation 정의 java5에서 추가된 기능. 주석이라는 뜻이지만 메타데이터(데이터에 대한 추가 데이터) 역할을 한다. 클래스, 함수 등에 사용할 수 있다. 정의 방법 package encrypt; @Documented @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface EncryptTarget { String name(); } @interface을 클래스 앞에 붙여서 정의해준다. 어노테이션 종류 package name since (java version) description java.lang (표준) Override 1.5 부모 클래스의 메서드 오버라이드 Deprecated 1.5 더 이상 개선이.. 2021. 2. 5.
[kotlin] property, backing field kotlin에서는 필드가 아닌 프로퍼티를 정의한다고 합니다. val name: String = "" // 불변 var name: String // 가변 프로퍼티는 var, val로 선언할 수 있습니다. var는 가변변수로 값을 변경할 수 있습니다. val는 불변변수로 값을 변경할 수 없습니다. java에서는 getter, setter를 보통 get필드이름. set필드이름 이라는 함수명으로 개발자가 직접 만들어 줬어야 합니다. kotlin에서는 프로퍼티에 getter, setter를 정의할 수 있습니다. data class MyTest ( val name: String ) { val fullName: String get() = "full $name" var diffName: String = "" get().. 2021. 2. 4.
[leetcode][594] Longest Harmonious Subsequence.cpp 문제 : leetcode.com/problems/longest-harmonious-subsequence/ 배열이 주어질 때, 최대값과 최소값이 정확히 1차이가 나는 subsequence들의 최대 길이를 구해라. 결국 길이가 1차이나는 요소들의 발생횟수들의 합의 최대값을 구하는 문제. 배열을 탐색하면서 요소 값을 key, 나온 횟수를 value로 가지는 map을 만들어 갱신한다. map을 모두 채웠으면 map을 모두 탐색하면서 탐색중인 map의 key값 + 1을 map에서 찾아서 만약 없으면 최대, 최소 차이가 1인 서브시퀀스를 만들수 없으므로 다음 map요소를 탐색한다. 만일 있다면 map[key] + map[key+1] 한 값들의 최대값을 구하면 정답이 된다. 시간복잡도는 O(N). N은 배열의 길이... 2021. 2. 4.
[키움증권] 종목데이터 조회 보호되어 있는 글 입니다. 2021. 2. 2.