SSONG Cloud

[SWEA] 7087 문제 제목 붙이기 본문

Algorithm/SW Expert Academy

[SWEA] 7087 문제 제목 붙이기

SSONGMI 2021. 2. 12. 17:15
반응형

: N개의 제목이 주어지고 이 제목들은 A, B, C... Z가 순서대로 한번씩 등장하도록 하기 위해 해당 알파벳으로 시작하는 제목들이 하나 이상씩 있는지 확인한다.

: 주어진 N개로 만들 수 있는 제목의 개수를 알아내야한다.

: 주의할 점은 주어진 N개의 제목은 A, B, C,.. Z 순서대로 주어질 필요는 없지만 A 부터 제목을 붙일 때 중간에 하나라도 없으면 그 다음은 제목개수로 판단하지 않는다.

 

1. 테스트 케이스 수 (T)를 입력받는다.

2. titles라는 배열을 만드는데 이는 A부터 Z까지 시작으로 하는 제목들의 수를 카운팅 할 배열이다.

3. 해당 테스트 케이스의 주어지는 제목 개수 N을 입력 받는다.

4. 제목들을 줄바꿈 단위로 입력받고 해당 첫글자에 해당하는 titles 배열을 1씩 카운팅한다.

5. 제목들을 모두 입력받아 카운팅 한 후 카운팅 된 배열을 다시 순회하며 연속된 개수를 count에 저장한다.

6. 만약 중간에 끊기면 그 즉시 반복문을 종료하고 그 때까지 계산된 count가 답이 된다. 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Solution {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static StringBuilder sb = new StringBuilder();
    public static void main(String[] args) throws NumberFormatException, IOException {
         
        int T = Integer.parseInt(br.readLine());
         
        for(int tc = 1; tc <= T; tc++) {
             
            int[] titles = new int['Z'-'A'+1];
            int count = 0;
            // N줄에 거쳐제목을 나타내는 문자열이 주어짐
            int N = Integer.parseInt(br.readLine());
             
            // 주어진 제목의 첫글자를 인덱스로 해서 카운팅함
            for(int i = 0; i < N; i++) {
                titles[br.readLine().charAt(0)-'A']++;
            }
            // 카운팅된 배열을 확인하면서 수가 0보다 크면 count를 1증가시키고 만약 0이면 반복문을 멈춤
            for(int i = 0; i < titles.length; i++) {
                if(titles[i] > 0) {
                    count++;                    
                }else {
                    break;
                }
            }
             
            sb.append("#" + tc + " " + count + "\n");
        }
        System.out.println(sb);
    }
}
반응형
Comments