백준 농구 경기

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개의 댓글

관련 채용 정보