반응형


 

백준 - 단계별로 풀어보기 [1316] 그룹 단어 체커

https://www.acmicpc.net/problem/1316

 

 

문제

 

 

임의의 문자열을 입력받은후, 알파벳의 연속 유무를 따져 그룹 단어인지 아닌지를 판별하는 프로그램을 작성하는 문제이다.

 

 

풀이

 

이전 문제와 비슷한 접근방법으로 풀 수 있는데, 각 알파벳에 대한 인덱스 배열을 만들고, 이전에 한번 나왔던 알파벳이 뒤에서 또 나오면 false를 반환하게끔하여 해결할 수 있다.

 

코드

 

#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main() {
    int num;
    cin >> num;
    string *str;
    str = new string[num];
    int idx[26] = {0,};
    bool status = true;
    int count = 0;
    for(int i = 0; i < num; i++)
    {
        cin >> str[i];
    }
    for(int i = 0; i < num; i++)
    {
        status = true;
        memset(idx,0,sizeof(idx));
        for(int j = 0; j < str[i].length(); j++)
        {
            if(idx[str[i][j]-'a'] != 0)
                if(str[i][j-1] != str[i][j])
                {
                    status = false;
                    break;
                }
            idx[str[i][j]-'a']++;
        }
        if(status)
            count++;
    }
    cout <<count;
}

 

평가

 

정답률 51%로 그다지 어려운 문제는 아니다. 모든 값이 소문자로 주어진다는 조건이 있었기 때문에,
str[i][j] - 'a'와 같은 트릭이 통하는 문제이다.

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,