1. 문제
https://www.acmicpc.net/problem/1159
2. 풀이
- 소문자 알파벳 비교를 하기 위하여 26칸(알파벳 개수)을 가지고 있는 배열을 생성한다.
- 테스터 케이스 입력 하고 각 입력 앞에 성 가져오기 위한 for문을 생성하고 안에 ch라는 변수에 charAt(0) - 97을 하여 하나씩 쪼개어 변수에 담아준다. (아스키코드표 소문자 a = 97, 소문자 기준으로 빼면 앞에 알파벳이 무엇인지 알 수 있기 위함이다.)
- ch변수에 담은 값을 인덱스에 넣고 값을 하나씩 ++ 해준다.
- 출력에 성을 붙여서 출력하기 위하여 StringBuilder를 생성한다.
- 배열 길이 만큼 도는 for 문을 만들고 조건을 5와 같거나 보다 큰 값을 조건으로 주고 char 타입 출력을 위해 캐스팅을 해주고 i + 97을 해준다. (i + 97 은 위와 동일하게 소문자 알파벳을 찾기 위함이다.)
- 5개 미만인 값을 출력하기 위해 조건을 만들어 출력한다.
3. 코드
package baekjoon;
import java.util.Scanner;
public class Q1159 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int[] arr = new int[26];
int n = scanner.nextInt();
for (int i = 0; i < n; i++) {
String name = scanner.next();
int ch = name.charAt(0) - 97; // 소문자 a = 97
arr[ch]++;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
if (arr[i] >= 5) {
sb.append((char) (i + 97));
}
}
if (sb.length() == 0) {
System.out.print("PREDAJA");
} else {
System.out.print(sb);
}
}
}
'Algorithm' 카테고리의 다른 글
[Java] 백준 10798번 : 세로읽기 ver.2 (0) | 2022.02.16 |
---|---|
[Java] 백준 10804번 : 카드 역배치 (0) | 2022.02.16 |
[Java] 백준 10798번 : 세로읽기 (0) | 2022.02.15 |
[Java] 백준 1316번 : 그룹 단어 체커 (0) | 2022.02.14 |
[Java] 백준 9093번 : 단어 뒤집기 (0) | 2022.02.11 |