[BOJ/백준] 1316번: 그룹 단어 체커 (c++)

devguri·2023년 3월 22일
0
post-thumbnail

1316번 문제 링크

입력 예시

Solution

  1. 모든 단어에 대해서 그룹으로 뭉쳐져 있어야한다.
  2. 먼저 나온 단어가 나중에 나와서는 안된다.
  3. 먼저 나온 단어가 또 나올 경우 연속된 경우만 가능

-> 이경우만 생각해서 풀이 !

source code

int wordChecker(string word, vector<int> alpha){
    alpha[(int)word[0]-97] = 1;

    for(int i=1; i<word.size(); i++){
        if(alpha[(int)word[i]-97]==0){ // = [word[i] - 'a']
            alpha[(int)word[i]-97] = 1;
            continue;
        }
        if(word[i-1]==word[i]){
            continue;
        }
        return 0;
    }
    return 1;
}
  • 단어를 입력받은거랑, 알파벳 26자 체크할 배열을 받아준다.
  • 단어 하나씩 돌아가며 처음 나온 단어인 경우, alpha 배열에 1로 체크해준다.
  • 이미 나온 단어인 경우 연속된 경우이면 다음 단어로 !
  • 이 조건 모두 충족하지 않으면 바로 return 하기!
  • return 1이면 그룹단어로 개수 증가시켜준다.

체크

(int)word[i]-97 = [word[i] - 'a']
-> 이부분 제대로 체크하기 'a'면 0번째 index 배열에 저장하는 것
-> 문자를 숫자처럼 다루기

profile
Always live diligently

0개의 댓글

관련 채용 정보