알고리즘 문제풀이/백준

#15904 : UCPC는 무엇의 약자일까?

모항 2022. 1. 19. 16:06

 

풀이방법

2022.01.19

'U', 'C', 'P', 'C'가 저장된 문자 배열 init 을 선언한다.

init을 탐색하는 데 사용되는 인덱스는 i이다.

 

입력 스트링을 한 단어씩 탐색한다.

 

탐색 대상 단어의 첫 글자가 init[i]가 아니라면 i의 값을 변경하지 않은 채 다음 단어로 넘어간다.

탐색 대상 단어의 첫 글자가 init[i]라면 i의 값을 1 증가시킨다.

 

이 과정을 진행하는 중에 i의 값이 4가 된다면 머리글자 'U', 'C', 'P', 'C'를 모두 찾은 것이므로 성공 문구를 출력하고 즉시 프로그램을 종료한다.

 

입력 스트링을 모두 탐색한 후에도 i의 값이 4보다 작다면 실패 문구를 출력하고 프로그램을 종료한다.

 

단, University CPC와 같이 한 단어 내에 여러 개의 머리글자가 포함된 경우도 있으므로

첫 글자가 init[i]라면 i의 값을 1 증가시킨 후 해당 단어의 나머지 글자들도 모두 한 글자씩 탐색한다.

해당 단어의 나머지 글자들 중 init[i]가 있다면 i의 값을 1 증가시키고 다음 글자를 탐색한다.

해당 단어의 모든 글자를 탐색한 후에 다음 단어로 넘어간다.

 

코드

Java(2022.01.19)

import java.io.*;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		String str = br.readLine();
		char[] init = {'U','C','P','C'};
		
		StringTokenizer st = new StringTokenizer(str, " ");
		
		int i = 0;
		String temp;
		//문자 열을 한 단어씩 탐색하며 판단
		while(st.hasMoreTokens()) {
			temp = st.nextToken();
			for(int j = 0; j<temp.length();j++) {
				if(temp.charAt(j) == init[i]) {
					i++;
					if (i==4) {System.out.print("I love UCPC"); System.exit(0);}//성공시 성공문구 출력 후 프로그램 종료.
				}else continue;
			}
			
		}
		//실패 시 프로그램이 종료되지 않고 반복문이 끝남. 실패문구 출력.
		System.out.print("I hate UCPC");
		
	}

}

'알고리즘 문제풀이 > 백준' 카테고리의 다른 글

#6996 : 애너그램  (0) 2022.01.21
#4583 : 거울상  (0) 2022.01.19
#1026 : 보물  (0) 2022.01.14
#11656 : 접미사 배열  (0) 2022.01.14
#15889 : 호 안에 수류탄이야!!  (0) 2022.01.13