Algorithm (Python & Java)/문자열

[백준/Java] 농구 경기 1159

DH_0518 2024. 12. 23. 23:21

1. 첫 번째 풀이(success): HashMap 사용

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;


/**
 * condition
 * - 성의 첫 글자가 같은 선수 5명을 선발
 *
 * answer
 * - 가능한 성의 첫 글자를 사전순으로 공백없이 출력
 * - 5명보다 적다면 PREDAJA 출력
 *
 * approach
 * - HashMap 사용
 * - 입력받은 이름의 첫 번째 값의 value 증가
 * - 모든 입력이 끝난 후 cnt가 5 이상인 값들을 sb에 추가 후 출력
 */

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		Map<Character, Integer> result = new HashMap<>();
		// 갯수 확인
		for (int i=0; i<n; i++) {
			char first = br.readLine().toCharArray()[0];
			Integer cnt = result.get(first);
			if (cnt != null) {
				result.put(first, cnt+1);
			} else {
				result.put(first, 1);
			}
		}
		// 5 이상인지 확인
		StringBuilder sb = new StringBuilder();
		for (Map.Entry<Character, Integer> entry: result.entrySet()) {
			if (entry.getValue() >= 5) {
				sb.append(entry.getKey());
			}
		}
		// 출력할 성이 있다면 정렬하여 출력
		char[] array = sb.toString().toCharArray();
		if (array.length == 0) {
			System.out.println("PREDAJA");
			return;
		}
		Arrays.sort(array);
		StringBuilder sortedSb = new StringBuilder();
		for (char c : array) {
			sortedSb.append(c);
		}
		System.out.println(sortedSb);
	}

}

 

 

2. 두 번째 풀이(success): array 사용

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


/**
 * condition
 * - 성의 첫 글자가 같은 선수 5명을 선발
 *
 * answer
 * - 가능한 성의 첫 글자를 사전순으로 공백없이 출력
 * - 5명보다 적다면 PREDAJA 출력
 *
 * approach
 * - 입력받은 이름의 첫 번째 값-97('a')의 cnt 증가
 * - 모든 입력이 끝난 후 cnt가 5 이상인 값들을 sb에 추가 후 출력
 */

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		// 갯수 확인
		char[] result = new char[26];
		for (int i=0; i<n; i++) {
			char first = br.readLine().charAt(0);
			result[first-'a'] +=1;
		}
		// 5 이상인지 확인
		StringBuilder answer = new StringBuilder();
		for (int i=0; i<26; i++) {
			if (result[i] >=5) {
				answer.append(Character.toString(i + 'a'));
			}
		}
		// 출력
		System.out.println(answer.length() == 0 ? "PREDAJA" : answer);
	}

}