반응형
백준 - 단계별로 풀어보기 [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'와 같은 트릭이 통하는 문제이다.
반응형
'Algorithm > Baekjoon BOJ' 카테고리의 다른 글
[백준 / BOJ] - 2839번 설탕 배달 C++ 풀이 (0) | 2020.02.10 |
---|---|
[백준 / BOJ] - 1712번 손익분기점 C++ 풀이 (0) | 2020.02.10 |
[백준 / BOJ] - 2941번 크로아티아 알파벳 C++ 풀이 (2) | 2020.02.07 |
[백준 / BOJ] - 1152번 단어의 개수 C++ 풀이 (0) | 2020.02.06 |
[백준 / BOJ] - 1018번 체스판 다시 칠하기 C++ 풀이 (1) | 2020.02.06 |