Java

#11 자바(JAVA) 알고리즘 문제풀이 : 코딩테스트 대비 / 학습 회장 ( Hash )

kminnnee 2023. 7. 22. 21:48

학급 회장을 뽑는데 후보로 기호 A, B, C, D, E 후보가 등록을 했다.

투표용지에는 반 학생들이 자기가 선택한 후보의 기호(알파벳)가 쓰여져 있으며 선생님은 그 기호를 발표하고 있다.

선생님의 발표가 끝난 후 어떤 기호의 후보가 학급 회장이 되었는지 출력하는 프로그램을 작성.

반드시 한 명의 학급회장이 선출되도록 투표결과가 나왔다고 가정

첫 줄에는 반 학생수 N(5<=N<=50)이 주어잔다

두 번째 줄에 N개의 투표용지에 쓰여져 있던 각 후보의 기호가 선생님이 발표한 순서대로 문자열로 입력

학급 회장으로 선택된 기호를 출력

 

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

public class Inflearn31 {
    public char solution(String s) {
        char answer = ' ';
        HashMap<Character,Integer> map = new HashMap<>();
        for(char x : s.toCharArray()) {             // s(문자열)를 문자 배열로 변환 하고 x에 저장
            map.put(x,map.getOrDefault(x,0)+1);  // 횟수를 세기 위해서 +1 을 해준다.
        }
        int max = Integer.MIN_VALUE;
        for(char key : map.keySet()) {              // map 의 key 들을 순회
            if (map.get(key) > max) {           // map.get(key) 은 key의 value 값을 구해줌
                max = map.get(key);
                answer = key;               // map.get(key) > max 를 만족하는 key 값을 answer에 저장
            }
        }
        return answer;
    }
    public static void main(String[] args) {
        Inflearn31 inflearn31 = new Inflearn31();
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        String str = scanner.next();    // 공백제거를 위해 next() 사용
        System.out.println(inflearn31.solution(str));
    }
}

 

HashMap<a,b > : key와 value로 구성된 쌍을 저장할 수 있는 컬렉션이다. 

<a,b> 는 제네릭 타입으로, 각각 키와 값의 타입을 의미한다.

예로 HashMap<Integer,Charater> 를 하면 키 타입은 Integer 타입 , 값의 타입은 Charater 타입을 의미한다.

 

map.put(x , value) : map에 키 'x' 와 값 'value'를 저장한다. 

만약 키가 map에 존재한다면 해당 키의 값이 새로운 값 'value'로 대체된다. 

만약 키가 map에 존재하지 않는다면 새로운 키-값 쌍이 map에 추가된다. 

 

map.getOrDefault(x,defaultValue)  : map에서 키 'x' 에 해당하는 값을 반환한다.

만약 키가 존재하지 않는다면 defaultValue 를 반환한다. 

 

map.keySet() : map 의 모든키들을 포함하는 Set 컬렉션을 반환한다. 

이를 통해 , 모든 키에 접근이 가능하다.

 

map.get(x) : map 에서 키 'x'에 해당하는 값을 반환한다. 

만약 키가 map에 존재하지 않는다면 null을 반환한다. 

 

 

 

 

 

출처 : https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-%EC%BD%94%ED%85%8C%EB%8C%80%EB%B9%84/dashboard

 

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 - 인프런 | 강의

자바(Java)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 코딩테스트에서 가장 많이 출제되는 Top 10 Topic을 다루고 있습니다. 주제와 연동하여 기초문제부터 중급문제까지 단계적으로 구성

www.inflearn.com