자바 백준 1159번
브론즈 2
https://www.acmicpc.net/problem/1159
문제 보기
분류: 구현, 문자열
문제 풀기
모든 이름을 입력받아 저장한다.
해시맵을 사용하여 이름의 첫 알파벳과 그 빈도수를 저장한다. 이때, getOrDefault() 를 사용하여 저장된 알파벳인 key 가 존재하면 기존의 value 에 1 을 누적하여 더하고 그렇지 않고 첫 알파벳 key 이면 0 + 1 을 저장한다.
모든 이름의 첫 알파벳을 HashMap 에 저장한 후 entrySet() 을 이용하여 key value 쌍을 for each 로 꺼내어 동일한 알파벳이 5 개 이상인지 확인하고 그에 대한 결과를 저장한다.
return 으로 받은 List 가 비었으면 "PREDAJA" 를 출력하고 그렇지 않으면 저장된 알파벳을 순차적으로 정렬하여 출력한다.
코드 보기
import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
import java.util.Collections;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine(); // 위 nextInt() 처리하고 남은 줄바꿈 문자를 소비하여 제거
// 선수들 이름을 저장할 리스트
List<String> playerList = new ArrayList<>();
for (int i = 0; i < n; i++) {
String pName = sc.nextLine(); // 선수 이름을 하나씩 받음
playerList.add(pName); // 선수 하나씩 저장
}
// 첫 알파벳이 다섯개 이상인지 확인하는 메서드
List<Character> output = findAlphabetWithFiveMore(playerList);
// 반환 결과에 따른 출력
if (output.isEmpty()) {
System.out.print("PREDAJA"); // 반환 결과가 비었을때
} else {
Collections.sort(output); // 알파벳 순으로 정렬
for (char c : output) {
System.out.print(c); // 반환 결과 하나씩 출력
}
}
}
private static List<Character> findAlphabetWithFiveMore(List<String> playerList) {
// 첫 알파벳과 그 개수를 저장할 해시맵
Map<Character, Integer> countMap = new HashMap<>();
// 선수 List 에서 이름 하나씩 꺼내어 첫 알파벳과 그 개수를 저장
for (String pName : playerList) {
char firstChar = pName.charAt(0); // 이름의 첫 알파벳을 저장
countMap.put(firstChar, countMap.getOrDefault(firstChar, 0) + 1); // 이미 저장된 알파벳이 없거나 있는 경우에 따른 key value 지정
}
// return 시킬 결과 List 생성
List<Character> output = new ArrayList<>();
// 동일한 알파벳이 5개 이상인지 판단
for (Map.Entry<Character, Integer> entry : countMap.entrySet()) { // key value 쌍으로 하나씩 꺼냄
if (entry.getValue() >= 5) { // value 를 확인
output.add(entry.getKey()); // 5 이상이면 key 저장
}
}
return output;
}
}
'공부하기 > 백준' 카테고리의 다른 글
[Java] 백준 풀기 9625 - BABBA (0) | 2023.06.16 |
---|---|
[Java] 백준 풀기 10172 - 개 (0) | 2023.06.15 |
[Java] 백준 풀기 1264 - 모음의 개수 (0) | 2023.06.13 |
[Java] 백준 풀기 2506 - 점수계산 (0) | 2023.06.12 |
[Java] 백준 풀기 1927 - 최소 힙 (0) | 2023.06.11 |