개발놀이터

4-1. 학급회장 본문

기타/코딩테스트

4-1. 학급회장

마늘냄새폴폴 2023. 2. 23. 07:08

package HashMap그리고TreeSet4장.학급회장4다시1.my;

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

public class Main {

    /**
     * -내 풀이-
     * 진짜 겁나 더럽게 풀었다...
     * HashMap 에 각각 A, B, C, D, E 를 배열처럼 넣고
     * 입력받은 문자열을 ArrayList 에 담아 해당 list 를 streamAPI 로 돌려서 equals 로 거르고 count 로 계산
     *
     * -선생님 풀이-
     * 정말 간단하게 풀었는데 핵심은 HashMap 클래스의 getOrDefault 를 통해 카운팅을 했다.
     * HashMap<Character, Integer> map = new HashMap<>();
     * String str = "~";
     * for (char c : str.toCharArray()) {
     *     map.put(c, map.getOrDefault(c, 0) + 1);      // getOrDefault 는 있으면 가져오고 없으면 초기화하는 메서드
     * }
     */

    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        int num = kb.nextInt();
        String input = kb.next();

        System.out.println(solution(num, input));
    }

    private static String solution(int num, String input) {
        String answer = "";
        ArrayList<String> list = new ArrayList<>();
        HashMap<Integer, String> map = new HashMap<>();
        char[] arr = input.toCharArray();
        long max = 0;
        long[] result = new long[5];

        map.put(0, "A");
        map.put(1, "B");
        map.put(2, "C");
        map.put(3, "D");
        map.put(4, "E");

        for (char c : arr) {
            list.add(Character.toString(c));
        }

        for (int i = 0; i < 5; i++) {
            int find = i;
            result[i] = list.stream().filter(x -> x.equals(map.get(find))).count();
            if (max < result[i]) {
                max = result[i];
                answer = map.get(i);
            }
        }

        return answer;
    }
}

 

package HashMap그리고TreeSet4장.학급회장4다시1.teacher;

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

public class Main {

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

    private static char solution(int n, String s) {
        char answer = '\0';
        HashMap<Character, Integer> map = new HashMap<>();

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

        int max = Integer.MIN_VALUE;

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

        return answer;
    }
}

'기타 > 코딩테스트' 카테고리의 다른 글

4-3. 매출액의 종류  (0) 2023.02.23
4-2. 아나그램  (0) 2023.02.23
3장 주요 개념 및 복습  (0) 2023.02.18
3-6. 최대 길이 연속 부분수열  (0) 2023.02.18
3-5. 연속된 자연수의 합  (0) 2023.02.18