알고리즘 풀이 방법입니다.
문제(Problem) -> 생각(Think) -> 해결책(Solution) -> 리뷰(Review) 를 통해서 정리해서 작성합니다.
Problem📄
단어 공부
Think🤔
가장 많이 사용된 단어 출력 대문자로
Mississipi -> i가 4번 , s가 4번이므로 "?" 출력
zZa -> Z 출력
baaa -> A 출력
HashMap으로 저장 후 가장 큰 value값 출력
Solution✍
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = "";
str = br.readLine().toUpperCase();
HashMap<Character, Integer> hs = new HashMap<>();
// hs에 HashMap으로 key , value 값 넣어주기
for(char c : str.toCharArray()){
hs.put(c, hs.getOrDefault(c,0) + 1);
}
char ans = '?'; // 정답 기본값 '?"
int max = 0;
for(Map.Entry<Character, Integer> entry : hs.entrySet()){
char c = entry.getKey();
int eVal = entry.getValue();
if(eVal > max){
max = eVal;
ans = c;
}else if(eVal == max){
ans = '?';
}
}
System.out.print(ans);
}
}
Review🤩
1. Map.Entry 사용법에 대해서 검색해봤음. entry하면 hs 키 - 값 밸류를 뽑아서 반복문 돌릴 수 있음.
2. char c : str 돌릴려고 했는데 toCharArray()
-> str로 안되는 이유 : String 클래스가 'Iterable' 인터페이스를 구현하지 않아서 그럼
3. for문에서 break 추가 엔트리 2개 이상일 경우 그 다음부터 검증 안해도 되므로 break;해주는게 효과적
4. 맨 처음 readLine 받을 때 UpperCase 하는 것이 더 바람직
5. values()로 반복문 돌려서 max 먼저 알아 냈는데 그것보다 , max 값이 두개이면 '?'을 나오게하고, 그 외에 제일 큰 값이면 해당 c를 출력하게 바꿔줌.
'Algorithm' 카테고리의 다른 글
[백준] 브1 > 최대공약수와 최소공배수 2609번 - JAVA (2) | 2024.10.08 |
---|---|
[백준] 브1 > 평균은 넘겠지(4344번) - JAVA (0) | 2024.09.18 |
[백준] 브론즈 1 > 더하기 사이클 (0) | 2024.09.10 |
[백준] 크로아티아 알파벳 2941번 (2) | 2024.09.08 |
[백준] 브론즈1 평균 1546번 (0) | 2024.09.07 |