백준 농구 경기

KIMYEONGJUN·2024년 12월 5일
0
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

첫째 줄에 선수의 수 N (1 ≤ N ≤ 150)이 주어진다.
다음 N개 줄에는 각 선수의 성이 주어진다. (성은 알파벳 소문자로만 이루어져 있고, 최대 30글자이다)

상근이가 선수 다섯 명을 선발할 수 없는 경우에는 "PREDAJA" (따옴표 없이)를 출력한다.
PREDAJA는 크로아티아어로 항복을 의미한다. 선발할 수 있는 경우에는 가능한 성의 첫 글자를 사전순으로 공백없이 모두 출력한다.

내가 이 문제를 보고 생각해본 부분

입력 처리: BufferedReader를 사용하여 입력을 받는다.
첫 번째 줄에서 선수의 수 N을 읽고, 이후 N개의 성을 읽는다.
첫 글자 카운트: HashMap을 사용하여 각 성의 첫 글자를 키로 하고, 해당 글자로 시작하는 성의 수를 값으로 저장한다.
5명 이상 선발 가능한 글자 찾기: countMap을 순회하여 5명 이상의 선수가 있는 첫 글자를 ArrayList에 추가한다.
결과 출력: 결과가 없으면 "PREDAJA"를 출력하고, 있으면 첫 글자를 정렬하여 출력한다.

코드로 구현

package baekjoon.baekjoon_25;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.ArrayList;
import java.util.Collections;

// 백준 1159번 문제
public class Main859 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());

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

        for(int i = 0; i < N; i++) { // 선수의 성을 입력받아 첫 글자 카운트
            String name = br.readLine();
            char firstChar = name.charAt(0);
            countMap.put(firstChar, countMap.getOrDefault(firstChar, 0) + 1);
        }

        ArrayList<Character> resultChars = new ArrayList<>();

        for(char key : countMap.keySet()) { // 5명 이상의 선수가 있는 첫 글자 찾기
            if(countMap.get(key) >= 5) {
                resultChars.add(key);
            }
        }

        // 결과 출력
        if(resultChars.isEmpty()) {
            System.out.println("PREDAJA");
        } else {
            Collections.sort(resultChars);
            StringBuilder sb = new StringBuilder();
            for(char c : resultChars) {
                sb.append(c);
            }
            System.out.println(sb.toString());
        }

        br.close();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글