Map<Key, Value> 형태 -> value를 찾는데 시간복잡도는 O(1)
ex) Map<Integer, String> map = HashMap<>();
map.put(1, "A");
map.put(2, "B");
map.put(3, "C");
- Map + String(getOrDefault())
- Map + Array
- Map + Math.max
- Map + Set
- Map + Map
- Set + Set
for (Integer key : map.keySet()) {
System.out.println("key : " + key + " value : " + map.get(key));
}
for (Map.Entry<Integer, String> element : map.entrySet()) {
System.out.println("key : " + element.getKey() + " value : " + element.getValue());
}
Iterator<Integer> keys = map.keySet().iterator();
while (keys.hasNext()) {
Integer key = keys.next();
System.out.println("key : " + key + " value : " + map.get(key));
}
주어진 문자열에서 반복되지 않는 첫 번째 문자를 찾아서 Index를 return
존재하지 않으면 -1를 반환Input : String s = "inflearninlove"
Output : 2
public class Q1 {
public static void main(String[] args) {
String s = "inflearninlove";
System.out.println(solve(s));
}
public static int solve(String s) {
if (s == null || s.length() == 0) {
return -1;
}
Map<Character, Integer> map = new HashMap<Character, Integer>();
for (char ch : s.toCharArray()) {
// 1
map.put(ch, map.getOrDefault(ch, 0) + 1);
// 2
// if (!map.containsKey(ch)) {
// map.put(ch, 1);
// } else {
// map.put(ch, map.get(ch) + 1);
// }
}
for (int i = 0; i < s.length(); i++) {
if (map.get(s.charAt(i)) == 1) {
return i;
}
}
return -1;
}
}
자연수가 들어가 있는 배열이 주어졌을 때 가장 빈도수가 높은 k개의 요소를반환
Input : int[] nums = {1,1,2,2,2,3,5,5,5,5} , int k = 2
Output : [5, 2]
빈도수 List) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 (nums의 길이가 10)
value List) null, 1, 2, 3, 4, null, null, null, null, null, null
key List) null, 3, 1, 2, 5, null, null, null, null, null, null
public class Q2 {
public static void main(String[] args) {
int[] nums = { 1, 1, 2, 2, 2, 2, 3, 5, 5, 5, 5 };
int k = 2;
System.out.println(solve(nums, k));
}
public static List<Integer> solve(int[] nums, int k) {
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
List<Integer>[] list = new List[nums.length + 1];
List<Integer> result = new ArrayList<>();
for (int num : nums) {
map.put(num, map.getOrDefault(num, 0) + 1);
}
for (int key : map.keySet()) {
int topFreq = map.get(key);
if (list[topFreq] == null) {
list[topFreq] = new ArrayList<Integer>();
}
list[topFreq].add(key);
}
for (int lastIndex = list.length - 1; lastIndex >= 0; lastIndex--) {
if (list[lastIndex] != null) {
// System.out.println(list[lastIndex]);
for (int i = 0; i < list[lastIndex].size() && result.size() < k; i++) {
result.add(list[lastIndex].get(i));
}
}
}
return result;
}
}
인프런 강의 : 코딩테스트 전 꼭 알아야 할 개념과 문제(with 자바) - 푸샵맨 코딩스터디