Today's special moments become memories of tomorrow.

BOJ

[백준 15904번] UCPC는 무엇의 약자일까? (java)

lotus lee 2021. 2. 12. 12:49

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

 

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

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

www.acmicpc.net

알고리즘 : 그리드 알고리즘, 문자열

 

어렵지 않은 문제

String 메서드만 적절히 사용하면 쉽게 풀 수 있는 문제다.

 

입력 받은 문자열의 첫번째 위치부터 시작하여 차레대로 indexOf(찾으려는 문자, 시작 인덱스) 메서드를 이용한다.

'U', 'C', 'P', 'C' 문자가 존재하는지 하나씩 검사한다.

 

'U' 문자를 찾으면 'U'의 위치 인덱스 +1 부터 'C' 문자가 있는지 확인한다.

'C' 문자를 찾으면 'C'의 위치 인덱스 +1 부터 'P' 문자가 있는지 확인한다.

'P' 문자를 찾으면 'P'의 위치 인덱스 +1 부터 'C' 문자가 있는지 확인한다.

 

중간에 indexOf() 메서드가 반환하는 값이 음수이면 찾는 문자가 없는 것이므로 반복문을 종료한다.

 

 

소스코드 : 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class n15904 {
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 str = br.readLine();
int idx = 0;
boolean flag = true;
char[] arr = { 'U', 'C', 'P', 'C' };
int i = 0;
while (i < 4) {
int nIdx = str.indexOf(arr[i++], idx);
if (nIdx == -1) {
flag = false;
break;
}
idx = nIdx + 1;
}
if (flag)
bw.write("I love UCPC\n");
else
bw.write("I hate UCPC\n");
bw.flush();
}
}