이 알고리즘 문제는 인프런의 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 (김태원)의 문제입니다.
문제 설명
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
public class sec04_01 {
public static char solution(String str) {
HashMap<Character, Integer> map = new HashMap<>();
char result = 0;
int max = 0;
for (char c : str.toCharArray())
{
int count = map.getOrDefault(c, 0) + 1;
map.put(c, count);
if (count > max)
{
max = count;
result = c;
}
}
return result;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
System.out.println(solution(br.readLine()));
}
}
설명
- map.getOrDefault(c, 0)는 map에서 문자 c의 현재 값(value)을 가져오며, 만약 map에 c가 없으면 기본값 0을 반환
- map의 각 키를 순회하면서 가장 큰 빈도(max)를 찾고, 그에 해당하는 문자를 result에 저장
Map의 주요 메서드
put(K key, V value) 지정된 키와 값을 맵에 추가하거나, 키가 이미 존재하면 그 값을 갱신
get(Object key) 지정된 키에 대응하는 값을 반환한다. 키가 없으면 null을 반
getOrDefault(Object key, V defaultValue) 지정된 키에 대응하는 값을 반환한다. 키가 없으면 기본값을 반환
containsKey(Object key) 맵에 지정된 키가 존재하는지 확인
containsValue(Object value) 맵에 지정된 값이 존재하는지 확인
remove(Object key) 지정된 키와 그에 대응하는 값을 맵에서 제거
size() 맵에 저장된 키-값 쌍의 개수를 반환
isEmpty() 맵이 비어 있는지 확인 clear() 맵의 모든 키-값 쌍을 제거
keySet() 맵에 있는 모든 키를 Set 형태로 반환
Set<String> keys = map.keySet(); // keys는 ["apple"]
values() 맵에 있는 모든 값을 Collection 형태로 반환
Collection<Integer> values = map.values(); // values는 [1]
entrySet() 맵의 모든 키-값 쌍을 Set 형태로 반환
Set<Map.Entry<String, Integer>> entries = map.entrySet(); for (Map.Entry<String, Integer> entry : entries) { System.out.println(entry.getKey() + ": " + entry.getValue()); }
'자료구조 & 알고리즘 > Inflearn' 카테고리의 다른 글
[인프런 알고리즘] Chapter 4, 3번 문제(매출액의 종류) (0) | 2024.08.03 |
---|---|
[인프런 알고리즘] Chpater 3, 2번 문제(아나그램(해쉬) (0) | 2024.08.02 |
[인프런 알고리즘] Chpater 3, 6번 문제(최대 길이 연속부분 수열) (0) | 2024.07.27 |
[인프런 알고리즘] Chpater 3, 5번 문제(연속된 자연수의 합) (0) | 2024.07.26 |
[인프런 알고리즘] Chpater 4, 4번 문제(연속 부분수열) (0) | 2024.07.25 |