학급 회장(해쉬)

Seungmin Lim·2022년 2월 9일
0

코딩문제연습

목록 보기
33/63

문제

나의풀이

import java.util.*;

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

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

}

풀이방법

먼저 foreach문을 통해 key값과 그 key값이 나온 횟수만큼 counting을 해서 결과적으로
A : 2, B : 3, C : 5, D : 2, E : 3 값이 담긴 Hashmap을 만들었다.

다시한번, foreach문을 통해
만약, 현재 value값이max보다 크다면 if(map.get(key) > max),
answer에는 key값이 담기고(answer= key)
max = 현재 value값으로 바뀐다 max = Math.max(max,map.get(key)).

핵심키워드

1. HashMap 선언방법:

HashMap<Character,Integer> map = new HashMap<>();
=> key값의 데이터타입이 char, value값의 데이터타입이 int인 hashmap이 생성된다.

2. HashMap의 다양한 메소드

2.1 HashMap.get(key)는 해당 key값의 value값을 얻을수있다.

예) 'a' : 1, 'b' : 2, 'c' : 3 ... 이런 hashmap이 있다면,
map.get(a) = 1을 리턴한다.

2.2 HashMap.put(char,int)는 hashmap의 key값에는 char, value값에는 int를 넣어준다.

예) 비어있는 Hashmap에 map.put('a',1) 을 하게되면 map에는 'a' : 1이 담긴다.

2.3 HashMap.getOrDefault(key,0)는 hashmap에 key값에 value가 있는지 확인하고 value가 없다면 0을 리턴한다.

이를 활용해서 counting을 할 때, 아직 key값이 들어오지 않았어도 counting을 시작 할 수있다.

예)
char s = 'a'
map.put(s,map.getOrDefault(s,0) + 1); 을 하게되면
만약, map에 key s가 없다면 map.getOrDefault(s,0) = 0이므로
결국 map.put(s,0+1)을 하는 것과 같다.

2.4 HashMap.containsKey(char)는 Key값의 유무여부를 알 수있다.

예) 'a' : 1, 'b' : 2, 'c' : 3 ... 이런 hashmap이 있다면,
map.containsKey('f')를 하게된다면 false를 리턴한다.

2.5 HashMap.size()는 hashmap의 Key의 갯수를 return한다. (배열로 치면 length)

2.6 HashMap.remove(char) 는 특정 Key를 삭제하고 value를 리턴한다.

예) 'a' : 1, 'b' : 2, 'c' : 3 ... 이런 hashmap이 있다면,
HashMap.remove('a') 는 hashmap을 'b' : 2, 'c' : 3 ...이런 형태로
a의 key와 value값을 삭제하고 1을 리턴한다.

0개의 댓글