2021년 7월 16일 금요일 - 엄청 덥다아..


오늘 올려볼 문제는 15904번 UCPC는 무엇의 약자일까? 이라는 문제이다.


사진을 클릭하면 해당 문제로 이동합니다.

백준 문제 사진

오늘은 백준을 둘러보다가 재밌어보이는 실버 문제를 가져왔다!
몇 없는 설명이 재밌는 문제

문자열 하나를 입력 받아서 이 문자열을 UCPC라는 약자로 줄일 수 있는지 판단하는 것이 이 문제다!


입력 예제

백준 문제 맞았습니다


입력 예제만 봐도 문제에 대한 감이 딱 잡힌다!!




풀이 및 코드


설명이 매우 긴 것에 비해서는 매우 간단한 문제이다.

그저 문자열을 문자 하나하나씩 비교해가면서 UCPC라는 문자를 순서대로 가지고 있는지만 판별하면 되기 때문이다.


말로 설명하는 것 보다는 바로 코드를 통해서 설명하는 것이 더 빠를 것 같다!


풀이 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        // 문자열이 UCPC 순서를 지키면서 UCPC 문자를 포함하는지 확인하기 위한 index, compare배열을 위해 사용된다.
        int index = 0;

        // UCPC를 저장하고 있는 배열, 문자열의 문자와 비교할 때 사용된다.
        // 0이 포함되어 있는 것은 입력으로 숫자는 들어오지 않는다고 했으므로 배열의 끝을 표현하기 위한 것이라고 생각하면 된다.
        char[] compare = {'U', 'C', 'P', 'C', '0'};

        String input = br.readLine();

        for(int i = 0; i < input.length(); i++)
        {
            // 만약 문자열의 문자가 index 부분 compare의 값과 같다면
            // index 값을 1 증가시킨다.
            if(input.charAt(i) == compare[index])
                index++;
        }

        // 만약 index가 4 (compare에서 0)라면 모든 순서를 지키고 UCPC 문자도 포함하고 있는 것이므로 약자로 만들 수 있는 것이다.
        if(index == 4)
            bw.write("I love UCPC");
        // 아니라면 약자로 만들 수 없는 것이다.
        else
            bw.write("I hate UCPC");

        bw.flush();
    }

}


제출 화면

백준 문제 맞았습니다

매일 블로그에 포스팅 하지는 않겠지만, 오늘은 좀 쉬운 문제로 쉬어가듯이 포스팅해봤다.

워낙 쉬운 문제이기 때문에 보러올 사람은 거의 없겠지만... 그래도 알고리즘 공부를 처음 해보는 사람들에게는 유용한 포스팅이었으면 좋겠다!

+ Recent posts