Algorithm/BOJ(Baekjoon Online Judge)
[백준 - 15904번] UCPC는 무엇의 약자일까? - Java //Wello Horld//
koucop
2019. 7. 25. 18:27
이번에는 BOJ의 15904번 문제 "UCPC는 무엇의 약자일까?" 에 대해서 풀어보도록 하자. (참고로, UCPC는 전국 대학생 프로그래밍 대회)이다. 문제 자체는 매우 간단하다. 입력으로, 문자열이 주어지고, 이 문자열에 UCPC가 차례대로 들어있어서 UCPC를 축약해서 만들 수 있는지 판별해 내는 문제이다. 만약, UCPC를 축약해서 만들 수 있으면, "I love UCPC"를 그렇지 않다면, "I hate UCPC"를 출력해주면 된다. 일단, 이 문제를 푸는데, 아래와 같이 노가다를 해서 한 조건문으로 판별할 수 있게 만들었다.
if ((line.charAt(i) == 'U' && ans.equals(""))
|| (line.charAt(i) == 'C' && ans.equals("U"))
|| (line.charAt(i) == 'P' && ans.equals("UC"))
|| (line.charAt(i) == 'C' && ans.equals("UCP")))
이렇게 조건문을 통과한 정답이 UCPC이면 반복문으로 문자열을 돌리는 것을 멈추고, "I love UCPC" 를 출력하도록 해주었다. 만약에, 문자열을 다 돌려봤는데, ans가 UCPC가 아닐경우, "I hate UCPC"를 출력해 주었다.
성공한 코드는 아래와 같다.
import java.io.*;
import java.util.*;
public class sample {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String line = br.readLine();
String ans = "";
for (int i = 0; i < line.length(); i++) {
if ((line.charAt(i) == 'U' && ans.equals("")) || (line.charAt(i) == 'C' && ans.equals("U"))
|| (line.charAt(i) == 'P' && ans.equals("UC")) || (line.charAt(i) == 'C' && ans.equals("UCP")))
ans += line.charAt(i);
if (ans.equals("UCPC"))
break;
}
if (ans.equals("UCPC"))
bw.write("I love UCPC\n");
else
bw.write("I hate UCPC\n");
bw.flush();
br.close();
bw.close();
}
}
문제 : https://www.acmicpc.net/problem/15904
15904번: UCPC는 무엇의 약자일까?
첫 번째 줄에 알파벳 대소문자, 공백으로 구성된 문자열이 주어진다. 문자열의 길이는 최대 1,000자이다. 문자열의 맨 앞과 맨 끝에 공백이 있는 경우는 없고, 공백이 연속해서 2번 이상 주어지는 경우도 없다.
www.acmicpc.net