풀이방법
사용된 것:
ArrayList
아스키코드
2022.01.21
26개의 요소를 가지고 있으며 모든 요소의 값이 0인 ArrayList<Integer> list를 생성한다.
a를 1번째 알파벳, b를 2번째 알파벳, ... z를 26번째 알파벳이라 부르자.
입력된 문장을 앞에서부터 한 글자씩 살피며, 해당 글자가 n번째 알파벳일 경우 list의 n번째 요소의 값을 1로 설정한다.
만약 입력된 문장이 팬그램이라면 list의 모든 요소의 값이 1로 바뀌고, 팬그램이 아니라면 list의 요소 중 하나 이상의 값이 0인 채로 남아있게 된다. 이를 이용해 팬그램 여부 및 문장에 등장하지 않은 알파벳이 무엇인지를 파악한다.
코드
Java(2022.01.21)
import java.io.*;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String str;
ArrayList <Integer> list = new ArrayList<Integer>();
for(int i = 0; i<26; i++) {
list.add(0);
}
int num;
int v;
for(int cnt = 0; cnt<n; cnt++) {
//list 초기화
for(int i = 0; i<26; i++) {
list.set(i,0);
}
str = br.readLine();
//str에 n번째 알파벳이 등장하면 list의 n번째 요소를 1로 설정.
for(int i = 0; i<str.length(); i++) {
if('A' <= str.charAt(i) && str.charAt(i) <= 'Z') {
num = (int)str.charAt(i);
list.set(num-(int)'A',1);
}
if('a' <= str.charAt(i) && str.charAt(i) <= 'z') {
num = (int)str.charAt(i);
list.set(num-(int)'a',1);
}
}
//팬그램인지 판별
v = 1;
for(int i = 0; i<26; i++) {
if(list.get(i) == 0) {
v = 0;
}
}
//팬그램일 경우 v == 1
if(v == 1) {
System.out.println("pangram");
}
//팬그램이 아닐 경우 v == 0
else if(v == 0) {
System.out.print("missing ");
for(int i = 0; i<26; i++) {
if(list.get(i) == 0) System.out.print((char)(i+'a'));
}
System.out.println();
}
}
}
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
#11048 : 이동하기 (0) | 2022.01.22 |
---|---|
#1764 : 듣보잡 (0) | 2022.01.21 |
#6996 : 애너그램 (0) | 2022.01.21 |
#4583 : 거울상 (0) | 2022.01.19 |
#15904 : UCPC는 무엇의 약자일까? (0) | 2022.01.19 |