개발자는 기록이 답이다

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비(HashMap, TreeSet(해쉬, 정렬지원 Set)_학급 회장_HashMap) 본문

알고리즘/인프런 - Java알고리즘 입문

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비(HashMap, TreeSet(해쉬, 정렬지원 Set)_학급 회장_HashMap)

slow-walker 2023. 9. 29. 17:26

 

 

1. 학급 회장(해쉬)

 

예시 입력 1 

15
BACBACCACCBDEDE

예시 출력 1

C

 

강의 풀이(Time: 159ms Memory: 27MB)

HashMap에 대한 이해가 필요하다.

 

  • map.put(key,value) : map의 데이터 자료 생성
  • map.get(key) : key에 해당하는 value값을 리턴
  • map.getOrDefault(key, 0) : map 객체에 key가 있다면 value값을 가져오고, 없으면 0을 리턴
  • map.keySet() : 존재하는 key를 전부 탐색 - for each에서 사용
  • map.containsKey(key): 맵 객체에 해당하는 key가 존재하는지 확인 후 boolean 리턴
  • map.size() :  존재하는 key의 개수를 리턴
  • map.remove(key) :  특정 key를 삭제하면서 해당  key의 value값 리턴

 

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

public class Main {

    public char solution(int n, String str) {
        char answer = ' ';
        HashMap<Character, Integer> map = new HashMap<>();
        // x가 key값
        for (char x : str.toCharArray()) {
            map.put(x, map.getOrDefault(x, 0) + 1); // 너무 너무 중요함!!!
        }
        int max = Integer.MIN_VALUE;
        for (char key : map.keySet()) {
//            System.out.println(key + " " + map.get(key));
            if (map.get(key) > max) {
                max = map.get(key);
                answer = key;
            }
        }
        return answer;
    }

    public static void main(String[] args) {
        Main T = new Main();
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        String str = kb.next();
        System.out.println(T.solution(n, str));

    }
}