[Algorithm] HashMap 기본 문제

Jong Min ·2024년 8월 8일

Algorithm

목록 보기
7/30

1. HashMap 이란?

HashMap은 Map을 구현했으므로 앞에서 살펴본 Map의 특징인, 키(key)와 값(value)을 묶어서 하나의 데이터(entry)로 저장한다는 특징 이 있다. 그리고 해싱(hashing) 을 사용하기 때문에 많은 양의 데이터를 검색하는데 있어 뛰어난 성능을 보인다.
HashMap 은 키와 값을 각각 Object타입으로 저장한다. 즉 (Object, Obejct) 의 형태로 저장하기 때문에 어떠한 객체도 저장할 수 있지만 키는 주로 String을 대문자 또는 소문자로 통일해서 사용하곤 한다.
그리고 키는 저장된 값을 찾는데 사용되는 것이기 때문에 컬렉션 내에서 유일(unique)해야한다. 즉, HashMap 에 저장된 데이터를 하나의 키로 검색했을 대 결과가 단 하나이어야 함을 뜻한다.

키(key) : 컬렉션 내의 키(key) 중에서 유일해야 한다.
값(valuje) : 키(key)와 달리 데이터의 중복을 허용한다.

2. HashMap 의 생성자와 메서드

 
 // HashMap 생성
 
 HashMap<,> map = new HashMap<>();
 
 // 데이터 넣기
 map.put('A',1);
 map.put('B',2);
 map.put('C',3);
 
 // 데이터 제거
 map.remove('A'); 
 
 // 데이터 출력 
 for(char c : map.keySet()){
 	System.out.println(c);
 }
 
 // 데이터 있는지 확인 Boolean 
 System.out.println(map.containsKey('A')); // true
 System.out.println(map.containsValue(3)); // true
 
 // key의 갯수
 System.out.println(map.size()); // 3

3. 문제

설명

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

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

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

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

입력

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

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


제목1제목2
15C
BACBACCACCBDEDE

풀이

    Scanner sc = new Scanner(System.in);

    int n = sc.nextInt();

    String s = sc.next();

    HashMap<Character, Integer> map = new HashMap<>();

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

    int max = 0;
    char answer = ' ';

    for(char key : map.keySet()){
      if(max < map.get(key)){
        max = map.get(key);
        answer = key;
      }
    }

    System.out.println(answer);

profile
노력

0개의 댓글