HackerRank/Algorithms

[HackerRank] Strings > Pangrams

ruming 2021. 8. 26. 06:09

pangram은 주어진 모든 문자를 한 번 이상 사용해 만든 문장이다.

이 문제에서는 알파벳을 a부터 z까지 전부 사용한 문장은 pangram을 출력, 아닌 문장은 not pangram을 출력하게 한다.

 

대문자는 소문자로 변환하고 int형 배열에 알파벳이 사용된 숫자를 저장했다. 배열에 0이 있으면 not pangram을 출력하고 그렇지 않으면 pangram을 출력한다.

char* pangrams(char* s) {
    static char pan[] = "pangram";
    static char n_pan[] = "not pangram";
    int i, j;
    char al[27] = {0};
    int check[26] = {0};
    for(i=0; i<26; i++) al[i] += 97+i;
    for(i=0; s[i]!='\0'; i++){
        if(s[i]>='A'&&s[i]<='Z')    s[i] += 32;
        for(j=0; j<26; j++){
            if(s[i] == al[j]){
                check[j]++;
                break;
            }   
        }
    }
    for(i=0; i<26; i++){
        if(!check[i])   return n_pan;
    }
    return pan;
}

답안을 저장할 static char형을 두 개 선언해 pangram과 not pangram을 넣어주었다.

문자열 al에는 반복문으로 소문자 a부터 z까지 넣어주고, 개수를 체크할 int형 배열 check를 하나 더 선언했다.

대문자가 거슬리므로 소문자로 변환해주고, s와 al이 같으면 check에 해당 인덱스 부분의 수를 +1한다.

check에 0이 있는지 검사해 있으면 n_pan을 반환, 없으면 pan을 반환한다.