자바/백준
[백준 14405] 피카츄
슈슈버거
2022. 8. 22. 17:22
문제
https://www.acmicpc.net/problem/14405
14405번: 피카츄
피카츄는 "pi", "ka", "chu"를 발음할 수 있다. 따라서, 피카츄는 이 세 음절을 합친 단어만 발음할 수 있다. 예를 들면, "pikapi"와 "pikachu"가 있다. 문자열 S가 주어졌을 때, 피카츄가 발음할 수 있는 문
www.acmicpc.net
내가 작성한 코드
import java.io.*;
public class 백준14405 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String input = br.readLine();
if(input.equals("pi") || input.equals("ka") || input.equals("chu")){
bw.write("YES");
}
else{
int i = 0;
boolean state = false;
if(input.length()==1){
bw.write("NO");
}
else{
while(i<input.length()){
if(i == input.length()-1){
bw.write("NO");
state = false;
break;
}
if(input.charAt(i) == 'p' && input.charAt(i+1) == 'i') {
i += 2;
state = true;
}
else if(input.charAt(i) == 'k' && input.charAt(i+1) == 'a') {
i += 2;
state = true;
}
else if(input.charAt(i) == 'c' && input.charAt(i+1) == 'h'){
if(i+2 >= input.length()){
bw.write("NO");
state = false;
break;
}
else if(input.charAt(i+2) == 'u'){
state = true;
i += 3;
}
else {
bw.write("NO");
state = false;
break;
}
}
else{
bw.write("NO");
state = false;
break;
}
}
if(state == true) {
bw.write("YES");
}
}
}
bw.close();
}
}
맨 처음에
1. 시작이 p,k,c가 아닐 경우
2. p 다음에 i 가 아닐 경우
3. k 다음에 a가 아닐 경우
4. c 다음에 h 다음에 u 가 아닐 경우
이렇게만 고려했다가 틀렸다
생각해보니
1. 길이가 1일 때
2. pip처럼 가능한 문자열 하나 이후에 p,k,c 세 개 중 하나의 문자가 올 때
3. ch가 주어질 경우
4. 문자열이 pi, ka, chu 그 자체일 때
이 4가지를 고려하지 않았더라
그래서 4가지를 수정해서 제출했더니 정답이다
여러 번의 시도 끝에 겨우 맞춘 거 같다 휴