학급 회장을 뽑는데 후보로 기호 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을 반환한다.
'Java' 카테고리의 다른 글
#13 자바(JAVA) 알고리즘 문제풀이 : 코딩테스트 대비 / 연속된 자연수의 합 (0) | 2023.07.26 |
---|---|
#12 자바(JAVA) 알고리즘 문제풀이 : 코딩테스트 대비 / 매출액의 종류 (2) | 2023.07.26 |
#10 자바(JAVA) 알고리즘 문제풀이 : 코딩테스트 대비 / 최대 길이 연속 부분 수열 (0) | 2023.07.22 |
#9 자바(JAVA) 알고리즘 문제풀이 : 코딩테스트 대비 / 연속 부분 수열 (0) | 2023.07.21 |
#8 자바(JAVA) 알고리즘 문제풀이 : 코딩테스트 대비 / 펠린드롬 (0) | 2023.02.13 |