반응형

1. 문제 번호 1157번


 

 

 

2. 문제 풀이 

 

 

 

 

나의 문제풀이 방식 및 순서

 

 * 나의 다양한 학습이 우선이기 때문에 다양한 방법을 생각 *

 

  1. HashMap
    1. 대문자로 치환
    2. 각 문자별로 개수를 확인하여 HashMap에 저장
    3. 최대값 추출하여 표현
      1. 최대값 추출은 반복문을 통한 방법
      2. 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

+ Recent posts