알고리즘 문제풀이/백준

#11091 : 알파벳 전부 쓰기

모항 2022. 1. 21. 02:16

풀이방법

사용된 것:

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