N

(SWEA c++)7087. 문제 제목 붙이기 본문

SW Expert Academy

(SWEA c++)7087. 문제 제목 붙이기

naeunchan 2020. 11. 23. 10:10
728x90
반응형

swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWkIdD46A5EDFAXC&categoryId=AWkIdD46A5EDFAXC&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

N개의 제목을 입력받으면서 맨 앞의 알파벳을 확인해야 한다.

우선 26 길이의 bool형 벡터를 선언하고 false로 초기화한다.

 

N개의 문자열을 s에 저장.

v[s[0] - 'A']를 true로 바꿔주도록 한다.

 

모든 문자열을 입력 받은 후, v 벡터를 순회하면 된다.

순회하기 전 'A'가 쓰였는지 v[0]을 확인하고 미리 ans++을 해주도록 한다.

순회하면서 v[i - 1]과 v[i]가 true라면 ans++.

false라면 v[i] = false로 바꿔주어 카운팅이 되지 않도록 막아주면 된다.

 

#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main(void)
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    
    int t;
    cin >> t;
    
    for(int tc = 1; tc <= t; tc++)
    {
        int N, ans = 0;
        vector<bool> v(26, false);
        
        cin >> N;
        
        for(int i = 0; i < N; i++)
        {
            string s;
            
            cin >> s;
            v[s[0] - 'A'] = true;
        }
        
        if(v[0])
            ans++;
        
        for(int i = 1; i < 26; i++)
        {
            if(v[i - 1] && v[i])
                ans++;
            else
                v[i] = false;
        }
        cout << "#" << tc << " " << ans << endl;
    }
    return 0;
}
728x90
반응형