반응형
https://www.acmicpc.net/problem/1159
- 문제
- 문제 풀이
백준 1159번 농구 경기는 브론즈 2 난이도의 구현 및 문자열 문제이다. 이 문제에서는 선수의 수 N명이 주어지고 N명의 선수 이름들이 입력으로 주어진다. 선수 이름의 첫 글자가 똑같은 사람이 5명이 넘으면 선수를 선발할 수 있다. 이때, 선수를 선발할 수 없으면 PREDAJA를 출력하고 선발할 수 있으면 선발 가능한 이름의 첫 글자를 사전 순으로 출력하면 된다.
이 문제는 아스키코드를 이용해서 풀 수 있다. 우선 알파벳이 총 26개 있으므로 크기가 26인 int형 배열 arr을 선언해준다. 이 배열은 이름의 첫 글자가 몇 번 나왔는지를 저장할 것이다. 그리고 이 문제에서는 이름들은 모두 소문자로 주어진다고 나와있다. 소문자 a의 아스키코드는 97이다. 따라서 배열에 저장할 때 arr [첫 글자 - 97]을 이용해서 저장할 수 있다.
선수들의 이름들 입력받을 때 첫 글자는 char c = name.charAt(0)을 이용해서 구할 수 있다. 그리고 배열에 이 이름의 첫 글자가 몇 변 나왔는지를 저장해야 하므로 arr [c - 97]++를 해주면 된다.
선수의 이름들을 다 입력받고 나서 만약에 배열에서 count가 5 이상인 알파벳이 없으면 PREDAJA를 출력해주고 있으면 사전 순으로 첫 글자를 출력해주면 된다.
자세한 코드는 밑에 있다.
- 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] arr = new int[26];
int n = Integer.parseInt(br.readLine()); //선수의 수
boolean possible = false; //다섯 명을 선발할 수 있는지
for (int i = 0; i < n; i++) {
String name = br.readLine();
char c = name.charAt(0); //첫 글자
arr[c - 97]++; //아스키 코드 이용
if (arr[c - 97] == 5) possible = true; //5명이 되면 5명을 선발할 수 있다
}
if (possible) {
for (int i = 0; i < 26; i++) {
if (arr[i] >= 5) System.out.print((char)(i+97));
}
} else {
System.out.print("PREDAJA");
}
}
}
반응형
'백준' 카테고리의 다른 글
[백준] 9086번 : 문자열 – JAVA [자바] (0) | 2022.08.10 |
---|---|
[백준] 16430번 : 제리와 톰 – JAVA [자바] (0) | 2022.08.10 |
[백준] 2587번 : 대표값2 – JAVA [자바] (0) | 2022.08.09 |
[백준] 3040번 : 백설 공주와 일곱 난쟁이 – JAVA [자바] (0) | 2022.08.09 |
[백준] 2476번 : 주사위 게임 – JAVA [자바] (0) | 2022.08.09 |
댓글