본문 바로가기

map5

[leetcode][525] Contiguous Array 문제 : https://leetcode.com/problems/contiguous-array/ 이진수 배열이 주어질 때, 0과 1의 개수가 같은 subarray의 최대 길이를 구하라. 부분합을 키로 하고 해당 부분합이 처음으로 나타난 위치(1이 시작점)를 value로 하는 map을 만든다. 0이 나오는 경우 합에 -1을 해주고 1이 나오는 경우 +1을 한다. 현재 탐색하고 있는 인덱스를 i라 하고 만약 이때까지 나온 부분합들 중 현재까지의 부분합(0~i)을 키로 하는 value가 있다면 i - value가 정답이 될 수 있는 경우이다. 예를 들어, 0011 이 있다면 subSum은 0 -1 -2 -1 0 이 된다. 가장 처음에 있는 0(시작)도 반드시 필요. 이 경우 정답이 될 수 있는 경우는 빨간색과,.. 2020. 4. 13.
[Kotlin] list.groupBy data class Notice(val no: Long, val name: String) data class File(val no: Long, val name: String, val noticeNo: Long) data class NoticeWithFiles(val no: Long, val name: String, val files: List) val notices = listOf(Notice(1L, "1"), Notice(2L, "2"), Notice(3L, "3")) val files = listOf(File(1L, "1", noticeNo = 1), File(2L, "2", noticeNo = 1), File(3L, "3", noticeNo = 1), File(4L, "4", noticeNo = 2.. 2019. 10. 17.
[leetcode][1207] Unique Number of Occurrences 문제 : https://leetcode.com/problems/unique-number-of-occurrences/ set, map을 사용. arr 배열을 탐색하면서 set에 arr[i]들을 저장한다. map은 arr[i]이 나온횟수를 저장하는 cnt, cnt의 value가 나온 횟수를 저장하는 num. 총 2개의 map을 준비한다. 즉, arr = { 1, 2, 2, 1, 1, 3, 2 } 이라면 cnt = { (1, 3), (2, 3), (3, 1) } num = { (1,1), (3, 2) } 이 된다. arr 배열을 탐색하면서 map1, map2개를 세팅한다. 그리고 num[i] = 1 이 되는 모든 i의 개수(uniqueNumCnt)를 구한다. 위 예제에서는 1이 된다. 만약 uniqueNumC.. 2019. 10. 2.
[leetcode] 1160. Find Words That Can Be Formed by Characters 문제 : https://leetcode.com/problems/find-words-that-can-be-formed-by-characters/ Map을 이용. 일단 chars 문자열을 모두 방문하면서 { 문자, 개수 }를 map에 저장한다. words 문자열들을 방문하면서 현재 탐색 중인 문자열의 문자도 탐색한다. 탐색 중인 문자가 chars map에 있는지 확인하고 있는 경우 개수를 1개 빼준다. 만약 문자가 map에 없거나 map에 탐색중인 문자의 개수가 0개라면 good string이 아니므로 탐색을 종료한다. good string이 될 수 있는 경우(탐색중인 문자열의 모든 문자들을 탐색완료 시) 문자열의 문자 길이를 정답에 더해준다. N : strings의 개수 / M : strings[i]의 길.. 2019. 9. 1.
[leetcode] 1172. Dinner Plate Stacks 문제 : https://leetcode.com/problems/dinner-plate-stacks/ let) capacity = 2 index 0 1 2 3 stack 4 1 3 5 fullStack : 가득찬 스택 인덱스 (2) blankFullStack : fullStack 사이사이의 index (0, 1, 3(3인덱스 스택이 가득찼다가 삭제된 경우)) stackMap : key - index, value - stack ({0, {1}}, {2, {4,3}}, {3, {5}) push 처음 push하는 경우는 0번 인덱스 stack에 push. 가득찬 스택들 중간에 빈 곳이 있는 경우(blankFullStack이 있는 경우) 빈 곳 중 가장 왼쪽에 넣어준다. 왼쪽부터 차례대로 스택들이 모두 차있는 경.. 2019. 8. 30.