본문 바로가기

Algorithm15

[힙(Heap)] 더 맵게 힙(Heap) - 더 맵게 간단하게 파이썬의 힙을 이용했다. 파이썬의 heapq 모듈은 최소 힙으로만 구현되어 있는데, 이 문제는 최소 힙을 활용하면 되는 거라 간단히 풀이가 가능했다. 여전히 분기를 깔끔하게 잘 하는 건 노력이 필요할 것 같다. import heapq def solution(scoville, K): answer = 0 heapq.heapify(scoville) while (scoville): min1 = heapq.heappop(scoville) if min1 >= K: return answer if not scoville: break else: min2 = heapq.heappop(scoville) temp = min1+min2*2 heapq.heappush(scoville, temp.. 2021. 12. 16.
[깊이/너비 우선 탐색(DFS/BFS)] 타겟 넘버 dfs-타겟 넘버 Java class Solution { private int[] numbers; private int len; public int solution(int[] numbers, int target) { this.len = numbers.length; this.numbers = numbers; return dfs(target, 0); } public int dfs(int target, int idx) { if (idx == len && target == 0) { return 1; } else if (idx==len) { return 0; } return dfs(target-numbers[idx], idx+1) + dfs(target+numbers[idx], idx+1); } } Python .. 2021. 12. 7.
[해시] 위장 해시-위장 java import java.util.*; class Solution { public int solution(String[][] clothes) { HashMap map = new HashMap(); for (String[] cloth : clothes) { // map.compute(cloth[1], (k, v) -> v == null ? 1 : v + 1); // compute를 이용해도 되지만, 아래 코드에 비해서 시간이 조금 더 걸린다. // compute는 언제 사용하는 건지 잘 모르겠다. 구현 코드를 보면 꽤 복잡해보인다. // (복잡해서 제대로 보진 않았다.) map.put(cloth[1], map.getOrDefault(cloth[1], 0) + 1); } Integer ans.. 2021. 9. 24.
[해시] 전화번호 목록 해시-전화번호 목록 java HashMap HashMap과 HashSet은 입력된 값(혹은 key를 기준으로)을 자동 정렬한다. 나는 번호 길이도 Set을 만들어서 for문을 돌렸다. 번호의 길이가 다양한 경우엔 사실 필요없을 것 같다. (1부터 최대 번호 길이까지 대부분이 포함될 때? 여튼, 데이터 상태에 따라 많이 다를 것 같다.) 정답 페이지를 둘러보다가 HashSet 보다 HashMap이 빠르다는 댓글을 보았다. 왜 그런지 찾아볼 예정. 효율성 성능만 테스트 3 〉 통과 (86.31ms, 101MB) 테스트 4 〉 통과 (76.96ms, 97MB) import java.util.*; class Solution { public boolean solution(String[] phone_book) { .. 2021. 9. 16.