코딩테스트/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";
}