코딩테스트/HackerRank

[HackerRank] Pangrams 📌

주니어주니 2023. 4. 4. 21:12

 

문제 

 

갑자기 중국어로 나오고 난리 ..;; 

암튼 주어진 문자열에서 모든 알파벳이 다 쓰였으면 "pangram" 출력, 다 쓰이지 않았으면 "not pangram" 출력 

 

 

 

 

다른 사람 풀이 

 

 

너무 어렵다 진짜 !!! 

 

1) boolean 값을 담을 alphabets 배열 생성 (알파벳 26자)

2) 문자열의 길이만큼 for문을 돌면서 한 글자씩 추출하고, 소문자로 변환

3) 추출한 글자가 a ~ z 에 해당하면, alphabets 배열 중 해당 알파벳의 인덱스 값(추출한 글자 - 'a')을 true로 변경

4) 완성된 alphabets 배열을 돌면서 만약 false 가 있으면 "not pangram" 출력, 없으면 "pangram" 출력 

 

 

 

+) 다른 풀이 

 

private static String pangrams(String s) {

    // 모든 알파벳이 다 쓰이면 -> pangram

    // 일단 소문자로 바꿈
    s = s.toLowerCase();
    // 알파벳 개수만큼의 배열 생성
    int[] freq = new int[26];

    // 문자열을 돌면서 알파벳의 아스키코드에 해당하는 freq배열의 인덱스에 1 추가
    for(char c : s.toCharArray()) {
        if(c >= 'a' && c <= 'z') {
            freq[c - 'a']++;
        }
    }
    // 0인 칸이 있으면 not pangram 반환
    for(int i=0; i<freq.length; i++) {
        if(freq[i] == 0) {
            return "not pangram";
        }
    }

    return "pangram";
}