Sort a HashMap in Java - (3) TreeSet
·
코딩테스트
TreeSet 정렬된 컬렉션에 중복된 값을 허용하고 싶지 않을 경우, TreeSet을 이용할 수 있다. Set 컬렉션의 경우 순서가 유지되지 않고, 중복이 허용되지 않는 특징을 가진다. 그런데 Set 인터페이스를 구현하는 TreeSet 클래스는 트리(Tree)라는 자료구조를 기반으로 구현되어있다. 따라서, TreeSet 클래스는 데이터를 정렬된 상태로 유지한다. TreeSet treeSet = new TreeSet(); Comparable 인터페이스를 구현하여 compareTo 메서드를 @오버라이딩 해야만 TreeSet에 저장할 수 있다. (정렬기준 제공) TreeSet에 Integer를 저장하면 숫자의 크고 작음을 기준으로 정렬되어 저장되고, String의 경우 정렬순서는 문자의 코드값이 기준이 된다...
Sort a HashMap in Java - (2) Using ArrayList
·
코딩테스트
ArrayList and Collections.sort() List는 Object 배열을 이용해서 데이터를 순차적으로 저장하는 컬렉션이다. 입력한 데이터의 순서가 유지되고, 데이터의 중복을 허용하는 특징을 가지고 있다. 구현 클래스 : ArrayList, Vector 이런 특징을 가진 ArrayList 의 도움을 받아 Map을 정렬할 수 있다. 1. Key로 정렬 keySet을 ArrayList에 저장한다. Collections.sort() 함수로 저장된 key를 정렬한다. List employeeByKey = new ArrayList(map.keySet()); Collections.sort(employeeByKey); 적용 public class UsingArrayList { public static ..
Sort a HashMap in Java - (1) TreeMap
·
코딩테스트
TreeMap TreeMap은 이진트리를 기반으로 한 Map 컬렉션이다. TreeMap에 객체를 저장하면, key는 저장과 동시에 자동으로 오름차순으로 정렬된다. (숫자 - 값 오름차순 정렬 / 문자열 : 유니코드 순으로 정렬) 정렬 순서는 기본적으로 부모 키값과 비교해서 키 값이 낮은 것은 왼쪽 자식 노드에 키값이 높은 것은 오른쪽 자식 노드에 Map.Etnry 객체를 저장한다. TreeMap은 일반적으로 HashMap보다 성능이 떨어진다. 그 이유는 TreeMap이 데이터를 저장할 때 정렬과정을 한 번 거치기 때문이다. 하지만 Map을 정렬상태로 유지해야하거나 정렬된 데이터를 조회해야 할 경우 TreeMap을 사용하는 것이 효율적이다. 즉, key-value쌍을 key를 기준으로 오름차순 정렬할 때 ..
Sort a HashMap in Java - Sort Function 완성하기
·
코딩테스트
Map JAVA 컬렉션에 대해 공부했을 때, Map에 대해 배운 정의 및 특징은 다음과 같았다. 키, 값 (key, value) 쌍으로 이루어진 데이터 집합 순서는 유지되지 않으며, 키는 중복을 허용하지 않고, 값은 중복 허용 구현체 - HashMap, HashTable, Properties HashMap map = new HashMap(); map의 데이터 저장방식 자체가 key-value 방식이기 때문에 key를 통해 value를 알아내는 것이 가능하다. key : 데이터를 찾는 열쇠(이름) value : 실질적인 데이터 따라서, 순서가 중요하지 않을 때는 map을 사용하고는 했는데 코딩테스트 문제를 풀던 중 Hashmap 형태로 저장한 데이터를 정렬(Sort) 해야만 하는 케이스가 생겼다. map은..
[LeetCode] 860. Lemonade Change
·
코딩테스트
leetcode.com/problems/lemonade-change/ Lemonade Change - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 내가 고른 문제인데, 결국 못풀었다. 테스트케이스가 적은 경우에는 정상 작동하는데, 커지면 안되는 걸 보면 로직 어딘가 구멍이 있다는 뜻이겠지..? 근데 어디서 잘못된건지 도통 눈치를 못채겠다. 스터디 시간에 물어봐야겠다...😅 each lemonade costs $5 Customers are standing in ..
[LeetCode] 1. Two Sum
·
코딩테스트
leetcode.com/problems/two-sum/ Two Sum - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 오늘 문제는 8분만에 풀었다📚 익숙한 for문으로 해결할 수 있는 문제여서 가능했다. 1. Two Sum return indices of the two numbers such that they add up to target. ➡ 배열안의 값 두 개를 더해서 target이 되는 배열 인덱스를 배열형태로 return Only one valid an..
[LeetCode] 347. Top K Frequent Elements
·
코딩테스트
leetcode.com/problems/top-k-frequent-elements/ Top K Frequent Elements - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 347. Top K Frequent Elements 문제 : 주어진 배열에서 가장 빈번하게 나오는 수를 k개수만큼 int [] 배열 형태로 리턴하는 문제 예시 1) Input: nums = [1,1,1,2,2,3], k = 2 Output: [1,2] 예시 2) Input: nums = ..
[LeetCode] 13. Roman to Integer
·
코딩테스트
leetcode.com/problems/roman-to-integer/ Roman to Integer - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 오늘은 예지님이 내준 문제..! 조금 쉬운걸로 해보자고 하셨는데 확실히 트리보다는 낫다.. 인덱스 문제를 해결하려다가 30분을 넘겼지만, 어쨋든 정상작동한 것에 뿌듯하다 😂 로마기호를 int로 계산하는 문제였는데, 연결된 로마기호가 있을 경우 4와 9가 들어갈떄는 다음과 같이 동작해야한다. IV=V-I ➡ 4, ..
[LeetCode] 112. Path Sum
·
코딩테스트
leetcode.com/problems/path-sum/ Path Sum - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 트리문제에 익숙해지고자 트리문제를 한번 더 풀어보기로 했다. 덕분에 문제 이해는 빨라졌지만, 코드 풀이는 아직 부족한 듯..힘내자! 첫 풀이 단말노드경로까지 더한 합계리스트를 담아두고 꺼냈을 때 targetSum이 되는 true를 반환하는 걸로 생각했는데, 그러려면 배열도 써야 하고, 값을 찾을 때 for문도 써야해서 타임도 오버 메모리도 ..
[LeetCode] Binary Tree Inorder Traversal
·
코딩테스트
leetcode.com/explore/interview/card/top-interview-questions-medium/108/trees-and-graphs/786/ 이진 트리!!!! 이론을 공부해도 코드로 구현하기는 녹록치 않다 💬 30분동안 푼 내용..문제 해석하느라 정신이 없었다. 노드를 순회하는 순서와 재귀함수를 써서 반복해야 하는것은 알았지만 코드 정리가 안되고 헤매는 모습😅 메서드를 새로 생성해도 된다는 생각을 못하고 해당 메서드 안에서만 풀려고하니까 이래저래 더 꼬인듯하다. public class BinaryTree0310 { public List inorderTraversal(TreeNode root) { //순서대로 처음에 들어오는 root가 루트노드 //그 다음이 left //그 다음이..