본문 바로가기
백준

[백준] 알고리즘 분류(그리디 알고리즘,JAVA)15904번, UCPC는 무엇의 약자일까?

by 열정적인 이찬형 2022. 11. 18.

문제 링크

 

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

첫 번째 줄에 알파벳 대소문자, 공백으로 구성된 문자열이 주어진다. 문자열의 길이는 최대 1,000자이다. 문자열의 맨 앞과 맨 끝에 공백이 있는 경우는 없고, 공백이 연속해서 2번 이상 주어지는

www.acmicpc.net


주의사항

  • JAVA를 사용하여 프로그램을 사용하였습니다.
  • 백준에서 코드를 작성하였을 때 아래 형태에서 Main에서 결과가 출력되어야 합니다.
public class Main{ 	
	public static void main(String[] args){
    }
}

문제 설명


접근 방법

이 문제에 핵심

 

1. 주어진 문자열을 축약을 통해 UCPC가 만들 수 있는지 확인해야 합니다.

2. 축약은 임의의 문자를 제거하는 행동입니다.

3. UPCP를 만들 수 있는지에 따라 결과를 출력합니다.

 

알고리즘 진행 순서.

 

1. 입력된 정보를 저장합니다.

 

2. 입력된 문자열을 탐색하여 "UCPC"을 순서대로 나오는지 확인합니다.

 

3. "UCPC"가 나오는 확인에 따라 결과를 출력합니다.

 

 

축약진행.

 

축약은 임의의 문자를 제거하는 것 = 내 맘대로 제거하고 싶은 문자를 제거
 
 
 
"UCPC"를 만드려면 문자열의 문자를 제거하면서 순서대로 "UCPC"가 나오면 됩니다.
 
예를 들어.
 
문자열 : PSUACPQSC
 
축약 진행!
 
PSUACPQSC
 
= UCPC 성공!
 
I love UCPC 출력!
 

예제입력 1.

 

1. 입력된 정보를 저장합니다.

 

문자열

Union of Computer Programming Contest club contest

 

2. 입력된 문자열을 탐색하여 "UCPC"을 순서대로 나오는지 확인합니다.

 

축약 진행!

 

Union of Computer Programming Contest club contest
 
=  UCPC 성공!
 
 

3. "UCPC"가 나오는 확인에 따라 결과를 출력합니다.

 

UCPC 성공으로 확인!
 
 
I love UCPC을 결과로 출력합니다.

 

  • BufferedReader를 사용하여 입력되는 정보를 저장합니다.
  • 입력된 문자열의 각 글자를 탐색하여 "UCPC"가 순서대로 작성되는지 확인합니다.
  • "UCPC"가 작성되는 탐색에 따라 결과를 BufferedWriter 저장하였습니다.
  • BufferedWriter에 저장된 결과값을 출력하였습니다.

 


import java.io.*;

public class Main{
    static char[] arr = {'U', 'C', 'P', 'C'};	//UCPC 순서 저장된 배열
    public static void main(String[] args) throws IOException {
        //입력값 처리하는 BufferedReader
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        //결과값 출력하는 BufferedWriter
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        String str = br.readLine();
        int index = 0;
        boolean check = false;	//"UCPC" 완성 여부 확인 변수
        //입력된 문자열 탐색!
        for(int i=0;i<str.length();i++){
            char c = str.charAt(i);
            if(c == arr[index])	//"UCPC"에 순서에 맞게 글자를 찾았을 때
                index++;
            if(index == 4){		//"UCPC" 완성시!
                check = true;
                break;
            }
        }
        //"UCPC" 완성!
        if(check)
            bw.write("I love UCPC");
        else	//"UCPC" 미완성!
            bw.write("I hate UCPC");
        bw.flush();		//결과 출력
        bw.close();
        br.close();
    }
}

댓글