7087. 문제 제목 붙이기 D3
[문제]
매번 혼자서 알고리즘 문제를 풀던 은기와 자영이는, 많은 사람들의 즐거움을 주기 위해 프로그래밍 대회를 개최하려고 한다.
은기와 자영이는 대회에 사용할 문제를 준비하는 과정에서 문제 제목을 정하게 되었다.
은기는 대회의 문제들에 사용할 수 있는 제목을 N개 만들었다.
자영이는 제목의 가장 앞 글자에 알파벳 대문자 A부터 시작하여, A, B, C, … , Z가 순서대로 한 번씩 등장하면 좋겠다고 하였다.
만약 도중에 특정 알파벳이 문제 제목의 맨 앞 글자로 등장하지 않으면 그 이후의 알파벳은 사용하지 않는다.
예를 들어, 문제 제목으로 Air, Dad, Ear, Blue, Ace가 있다면, A와 B는 등장하였지만, C는 등장하지 않았기 때문에 최대 2개의 문제 제목을 사용할 수 있는 것이다.
은기가 만든 문제들의 제목이 주어질 때, 자영이가 정한 규칙에 따라서 사용할 수 있는 최대 문제 제목의 개수를 계산하는 프로그램을 작성하라.
[입력]
첫 번째 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스의 첫 번째 줄에는 하나의 정수 N ( 1 ≤ N ≤ 100 )이 주어진다.
다음 N개의 줄에 걸쳐서 은기가 만든 문제의 제목을 나타내는 문자열이 주어진다.
이 문자열을 구성하는 문자는 최대 30개를 넘지 않으며, 대문자 알파벳으로 시작하여, 영어 알파벳과 숫자, ‘_’로만 구성된다.
[출력]
각 테스트 케이스마다 ‘#x’(x는 테스트케이스 번호를 의미하며 1부터 시작한다)를 출력하고,
자영이가 정한 규칙에 따라서 사용할 수 있는 최대 문제 제목의 개수를 출력한다.
3 5 Air Dad Ear Blue Ace 3 Snow_White A_Problem Another_Problem 2 Good_Problem Better_Problem |
// 테스트 케이스 개수 // 첫 번째 테스트 케이스, N=5 // 첫 번째 테스트 케이스, N=3 |
#1 2 #2 1 #3 0 |
// 첫 번째 테스트 케이스 결과 |
[코드]
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for (int i = 1; i <= T; i++) {
int N = Integer.parseInt(br.readLine());
Set<Integer> arrc= new TreeSet<>();
for (int i2 = 0; i2 < N; i2++) {
String S = br.readLine();
arrc.add(S.charAt(0)+0);
}
List<Integer> arri=new ArrayList<>(arrc);
Collections.sort(arri);
int count=0;
int start='A'+0;
for (int i3 = 0; i3 < arri.size(); i3++) {
if(arri.get(i3)==start) {
start++;
count++;
}
else {
break;
}
}
System.out.println("#"+i+" "+count);
}
br.close();
}
}
'SWEA(SWExpertacAdemy)' 카테고리의 다른 글
[SWEA] 9778. 카드 게임 D3 (자바) (1) | 2025.05.22 |
---|---|
20551. 증가하는 사탕 수열 D3 (1) | 2025.05.21 |
[SWEA] 1209. [S/W 문제해결 기본] 2일차 - Sum D3 (자바) (1) | 2025.05.20 |
[SWEA] 10912. 외로운 문자 D3 (자바) (0) | 2025.05.20 |
[SWEA] 5789. 현주의 상자 바꾸기 D3 (자바) (0) | 2025.05.20 |