
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() 메서드가 반환하는 값이 음수이면 찾는 문자가 없는 것이므로 반복문을 종료한다.
소스코드 :
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); | |
} | |
} |
'BOJ' 카테고리의 다른 글
[백준 16637번] 괄호 추가하기 (java) (0) | 2021.02.14 |
---|---|
[백준 14697번] 방 배정하기 (java) (0) | 2021.02.13 |
[백준 15903번] 카드 합체 놀이 (java) (0) | 2021.02.11 |
[백준 11000번] 강의실 배정 (java) (0) | 2021.02.11 |
[백준 1967번] 트리의 지름 (java) (0) | 2020.01.05 |