[알고리즘] HashMap, TreeSet(1) : 해쉬, 정렬지원(JAVA)

ho's·2022년 5월 27일
0

🎪 해쉬, 정렬 지원

👓 문제

👕 풀이

📄 HashMap

위의 사진 처럼 HashMap< key , value > 를 이용해서 Key, value의 값을 저장 할 수 있다.

💾 HashMap의 특징

참고 블로그

참고 블로그

📄 solution 메소드

public char solution(int n, String s){
	char answer = ' ';
    HashMap<Character, Integer> map = new HashMapM<>();
    
    for(char x : s.tocharArray()){
    	map.put(x, map.getOrDefault(x,0)+1);
    }
    
    int max = Integer.MIN_VALUE;
    for(char key : map.keySet()){
    	if(map.get(key) > max){
        	max = map.get(key);
            answer = key;
        }
    }
    return answer;
}
HashMap<Character, Integer> map = new HashMap<>();
  • HashMap객체를 생성한다. key값은 Character, Value는 Integer이다.
for(char x : s.tocharArray()){
	map.put(x, map.getOrDefault(x,0)+1);
}
  • main메소드에서 입력 받은 String형태의 변수 s를 tocharArray() 메소드를 통해 x 배열에 저장한다.
  • map.put(); 을 통해 x를 key, map.getOrDefault(x,0)+1 을 value에 저장한다.
  • map.put(x, getOrDefault(x,0)+1)
    key값을 x
    value값을 map.getOrDefault()메소드를 이용해 저장한다.
    이전에 x의 value가 있을 경우 +1 을 해주고, 없을 경우 즉, Default인 경우에는 +1을 해주고 저장해준다.
for(char key: map.keySet()){
	if(map.get(key) > max){
    	max = map.get(key);
        answer = key;
    }
}

for(char key : map.keySet())

  • map.keySet()은 map에 저장되어 있는 key값들의 배열이다.
if(map.get(key) > max){
		max = map.get(key);
        answer = key;
}

map객체를 통해 얻은 key의 value값이 max보다 크면, max의 값을 map.get(key)에 저장한다.
그 다음, key값을 answer에 저장한다.

🩳 소스코드

package algolecture;

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

public class Main31 {
    public char solution(int n, String s) {
        char answer = ' ';
        HashMap<Character,Integer> map = new HashMap<>();

        for(char x : s.toCharArray()){
            map.put(x, map.getOrDefault(x, 0)+1);
        }

        int max = Integer.MIN_VALUE;
        for(char key : map.keySet()){
            if(map.get(key) > max){
                max = map.get(key);
                answer = key;
            }
        }
        return answer;
    }

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


profile
그래야만 한다

0개의 댓글