[Algostudy] 학급회장

문제설명

학급 회장을 뽑는데 후보로 기호 A,B,C,D,E 후보가 등록을 했습니다.
투표용지에는 반 학생들이 자기가 선택한 후보의 기호(알파벳)가 쓰여져 있으며 선생님은 그 기호를 발표하고 있습니다.
선생님의 발표가 끝난 후 어떤 기호의 후보가 학급 회장이 되었는지 출력하는 프로그램을 작성하세요.
반드시 한 명의 학급회장이 선출되도록 투표결과가 나왔다고 가정합니다.

입력

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

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

출력

학급 회장으로 선택된 기호를 출력합니다.

입력예제                                                    예시 출력
15
BACBACCACCBDEDE                                      C

작성한 코드

public class Main {
	public static char solution(int n, String s) {
		char answer=' ';
		HashMap<Character, Integer> map = new HashMap<>();//key는 character, value는 Integer
		for(char key : s.toCharArray()) {
			map.put(key, map.getOrDefault(key, 0)+1); //x의 키값을 가져오되 없다면 0을 return 카운팅할 때 중요
		}
		//System.out.println(map.containsKey('A')); 'A'라는 키가 있는지 알려줌 true or false return 
		//System.out.println(map.size()); key의 개수를 알려줌
		//map.remove('A'); //A라는 키 값을 삭제함
		int max = Integer.MIN_VALUE;
		for(char key : map.keySet()) { //map객체를 탐색할 때 keySet으로 탐색함
			if(map.get(key) > max) {
				max=map.get(key);
				answer = key;      //map.get(x) x 키의 value 값을 가져온다는 의미
			}
		}
		
		return answer;
	}

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

}

👀 여기서 중요했던 것

  hashMap을 이용하여 map객체를 생성한 후 getOrDefault()를 사용하여야 key의 키 값을 가져올수있고 그 key에 대한 키 값이 존재하지 않는다면 0을 리턴하고 마지막에 1을 더함으로 써 총 몇 번 투표를 받았는지 알수있는게 중요했다. 많이 사용하는거라고 하니 잘 알아두도록 하자. 그리고 keySet()은 생성한 객체를 탐색할 때 사용한다고 하니 문제 풀 때 많이 쓰인다고 한다.

좋은 웹페이지 즐겨찾기