문제
- 학급 회장을 뽑는데 후보로 기호 A, B, C, D, E 후보가 등록을 했습니다.
- 투표용지에는 반 학생들이 자기가 선택한 후보의 기호(알파벳)가 쓰여져 있으며 선생님은 그 기호를 발표하고 있습니다.
- 선생님의 발표가 끝난 후 어떤 기호의 후보가 학급 회장이 되었는지 출력하는 프로그램을 작성하세요.
- 반드시 한 명의 학급회장이 선출되도록 투표결과가 나왔다고 가정합니다.
입력
- 첫 줄에는 반 학생수 N(5<=N<=50)이 주어집니다.
- 두 번째 줄에 N개의 투표용지에 쓰여져 있던 각 후보의 기호가 선생님이 발표한 순서대로 문자열로 입력됩니다.
출력
- 학급 회장으로 선택된 기호를 출력합니다.
입출력 예제
풀이방식
이번 문제는 HashMap 을 사용하여 푸는 문제이다.
설계과정
1. HashMap을 통해 Key와 Value로 나누어 각 값들을 저장한다.
2. 가장 많이 나온 기호를 출력한다.
풀이과정
1. 학생 수 N과 투표용지에 적힌 기호 str 을 입력받는다.
2. char 로 리턴받을 것이기에 char 형으로 메소드를 작성한다.
3. HashMap를 선언한다.
4. x와 str.toCharArray() 를 비교해서 찾으려하는 key 값이 있으면 1을 더해서 반환한다.
아래 과정을 통해 자세히 이해해보자.
먼저, 기존에 존재하는 HashMap 배열은 아래와 같다.
x에 B 라는 값이 들어갔다고 가정했을때에 결과는 아래와 같다.
x에 E라는 값이 들어갔다고 가정했을때에 결과는 아래와 같다.
- toCharArray() : str에 입력된 문자열을 문자 하나씩 분리해서 문자 배열을 생성한다.
- map.put() : Key와 Value 값을 HashMap에 넣는다. 만약 키 값이 없으면 생성한다.
- map.getOrDefault(Key 값, Default 값) : 찾는 키가 존재한다면 찾는 키의 값을 반환하고 없다면 기본 값을 반환하는 메소드이다.
5. keySet()을 통해 키 값을 찾고, get()을 통해 키에 해당하는 값을 찾아 최대값을 비교한다.
- map.keySet() : Map에 저장되어있는 키(Key)들을 반환하는 메소드이다.
- map.get() : Map에 저장되어있는 Value 들을 반환하는 메소드이다.
해당 글은 인프런 > 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비(김태원)강의를 참고하여 작성하였습니다.
'알고리즘 > 인프런' 카테고리의 다른 글
섹션 4. HashMap, TreeSet (해쉬, 정렬지원 Set) 3. 매출액의 종류 (0) | 2022.10.07 |
---|---|
섹션 4. HashMap, TreeSet (해쉬, 정렬지원 Set) 2. 아나그램 (2) | 2022.10.05 |
섹션 3. Two pointers, Sliding window[효율성 : O(n^2)-->O(n)] 6. 최대 길이 연속부분수열 (0) | 2022.09.28 |
섹션 3. Two pointers, Sliding window[효율성 : O(n^2)-->O(n)] 5. 연속된 자연수의 합 (0) | 2022.09.27 |
섹션 3. Two pointers, Sliding window[효율성 : O(n^2)-->O(n)] 4. 연속부분수열 (0) | 2022.09.27 |