본문 바로가기
Develop/Coding Test | Algorithm

[백준] JAVA풀이 - 1157 : 단어 공부

by 코젼 2024. 2. 26.
728x90
반응형

▶️백준

https://www.acmicpc.net/problem/1157

 

1157번: 단어 공부

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

www.acmicpc.net

 

Map, HashMap, Entry를 적절히 사용하며 문제 풀기 완료!

해당 백준 문제를 풀면서 Map.Entry 인터페이스 내 메서드를 공부할 수 있었다.

    -- Map<K, V> 로 이루어진 인터페이스

Map.Entry 인터페이스 주요 메서드

Method Description
Object getKey() Entry의 key 객체 반환
Object getValue() Entry의 value 객체 반환
boolean equals(Object o) 동일한 Entry인지 비교
int hashCode() Entry의 해시코드 반환
Object setValue(Object value) Entry의 value 객체를 지정된 객체로 변경

 

Map 주요 메서드

Map 인터페이스를 구현한 클래스는 HashMap, Hashtable, TreeMap, SortedMap 등이 있다.

Method Description
put(Object key, Object value) 주어진 키로 값을 저장하는 메서드
- 새로운 키일 경우 null 리털
- 동일한 키일 경우 기존 값 대체하고 이전 값 리턴
get(Object key) 주어진 키에 해당하는 값 리턴
size() 저장된 Entry 객체의 총 개수 리턴
containsKey(Object key) 주어진 키가 있으면 true, 없으면 false 반환
containsValue(Object value) 주어진 값이 있으면 true, 없으면 false 반환
isEmpty() 컬렉션이 비어있는지 확인
비어있으면 true, 비어있지 않으면 false 반환
keySet() 모든 키를 Set 객체에 담아 리턴
entrySet() 키와 값의 쌍으로 구성된 모든 Map.Entry 객체를 Set에 담아 리턴
clear() 모든 Map.Entry 객체 삭제 (키, 값 모두 삭제)
remove(Object key) 주어진 키와 일치하는 Map.Entry 객체를 삭제하고 값 리턴
- List : 인덱스 기준으로 관리
- Map : key로 객체 관리

List는 인덱스 기준으로 관리하고 Map은 key로 객체들을 관리하기 때문에 key를 매개 값으로 갖는 메서드가 많다.

 

▶️답안

 
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        char[] word = sc.nextLine().toUpperCase().toCharArray();
        Map<Character, Integer> hm = new HashMap<>();

        // 빈도수 체크
        for (Character w : word) {
            hm.put(w, hm.getOrDefault(w, 0) + 1); // 해당 key가 존재하면, 해당 key의 value + 1
        }
        int maxCount = 0;
        char maxChar = '?';
        for (Map.Entry<Character, Integer> entry : hm.entrySet()) {
            if (entry.getValue() == maxCount) {
                maxChar = '?';
            } else if (entry.getValue() > maxCount) {
                maxCount = entry.getValue();
                maxChar = entry.getKey();
            }
        }
        System.out.println(maxChar);
    }
}

 

 


 

▶️ 참고

https://junecode.tistory.com/113

https://ittrue.tistory.com/151

728x90
반응형

댓글