반응형
1. 문제 번호 1157번
2. 문제 풀이
-
나의 문제풀이 방식 및 순서
* 나의 다양한 학습이 우선이기 때문에 다양한 방법을 생각 *
- HashMap
- 대문자로 치환
- 각 문자별로 개수를 확인하여 HashMap에 저장
- 최대값 추출하여 표현
- 최대값 추출은 반복문을 통한 방법
- Java Stream API를 사용
3. 소스 인증
import java.util.*;
import java.lang.*;
import java.io.*;
// The main method must be in a class named "Main".
class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in ));
String inputLine = br.readLine().toUpperCase();
int inputSize = inputLine.length();
Map<Character, Integer> alphabetCnt = new HashMap<>(); //Map 인터페이스는 키와 값 모두 객체
for(int i = 0; i < inputSize; i++){
char currentChar = inputLine.charAt(i);
if(alphabetCnt.containsKey(currentChar)){
alphabetCnt.put(currentChar, alphabetCnt.get(currentChar) + 1);
} else {
alphabetCnt.put(currentChar, 1);
}
//indexOf 처음나오는 index찾기
// if (inputLine.indexOf(inputLine.charAt(i)) != i) {
// }
}
char maxChar = ' ';
int maxValue = 0;
boolean hasMultipleMax = false;
for(Map.Entry<Character, Integer> entry : alphabetCnt.entrySet()){
int count = entry.getValue();
if(maxValue < count){
maxValue = count;
maxChar = entry.getKey();
hasMultipleMax = false;
} else if (maxValue == count){
hasMultipleMax = true;
}
}
System.out.print( hasMultipleMax==true ? "?" : maxChar );
}
}
import java.util.*;
import java.lang.*;
import java.io.*;
// The main method must be in a class named "Main".
class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in ));
String inputLine = br.readLine().toUpperCase();
int inputSize = inputLine.length();
Map<Character, Integer> alphabetCnt = new HashMap<>(); //Map 인터페이스는 키와 값 모두 객체
for(int i = 0; i < inputSize; i++){
char currentChar = inputLine.charAt(i);
if(alphabetCnt.containsKey(currentChar)){
alphabetCnt.put(currentChar, alphabetCnt.get(currentChar) + 1);
} else {
alphabetCnt.put(currentChar, 1);
}
}
Optional<Map.Entry<Character, Integer>> maxEntry = alphabetCnt.entrySet().stream()
.max(Map.Entry.comparingByValue());
if(maxEntry.isPresent()){
Map.Entry<Character, Integer> entry = maxEntry.get();
long count = alphabetCnt.entrySet().stream()
.filter(e -> e.getValue().equals(entry.getValue()))
.count();
if(count > 1){
System.out.println("?");
} else {
System.out.println(entry.getKey());
}
}
System.out.print( hasMultipleMax==true ? "?" : maxChar );
}
}
- 실패 소스코드 -
4. 추가 개념
HashMap
5. 참조 블로그
불편함을 느끼실 경우 연락 주시면 곧 바로 삭제하도록 하겠습니다.
728x90
반응형
'알고리즘(BOJ) 문제풀이' 카테고리의 다른 글
[BOJ/백준] 심화_1316번 (0) | 2024.05.18 |
---|---|
[BOJ/백준] 심화_2941번 (0) | 2024.05.18 |
[BOJ/백준] 심화_10988번 (0) | 2024.05.17 |
[BOJ/백준] 심화_2444번 (0) | 2024.05.17 |
[BOJ/백준] 1차원 심화_ 3003번 (0) | 2024.05.16 |