[백준] 14405번 피카츄
- 알고리즘/백준
- 2020. 5. 4. 19:29
반응형
반응형
문제
피카츄는 "pi", "ka", "chu"를 발음할 수 있다. 따라서, 피카츄는 이 세 음절을 합친 단어만 발음할 수 있다. 예를 들면, "pikapi"와 "pikachu"가 있다.
문자열 S가 주어졌을 때, 피카츄가 발음할 수 있는 문자열인지 아닌지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 문자열 S가 주어진다. 문자열은 알파벳 소문자로 이루어진 문자열이며, 길이는 5000을 넘지 않는다.
출력
문자열 S가 "pi", "ka", "chu"를 이어 붙여서 만들 수 있으면 "YES"를 아니면 "NO"를 출력한다.
이 문제 자바로 풀면 난이도가 상승하는 이상한 문제... ㅡㅡ;
분명 같은 코드인데 자바는 런타임이고, c++은 답이고...ㅡㅡ;;
이래서 c++로 알고리즘 공부를 해야한다.
package backjun;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Picachu {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
StringBuilder sb = new StringBuilder(str);
String ans = "YES";
int i = 0;
while(i< sb.length()) {
if (sb.charAt(i) == 'p' && sb.charAt(i+1) == 'i') {
i+=2;
} else if (sb.charAt(i) == 'k' && sb.charAt(i+1) == 'a') {
i+=2;
} else if (sb.charAt(i) == 'c' && sb.charAt(i+1) == 'h' && sb.charAt(i+2) == 'u') {
i+=3;
} else {
ans = "NO";
break;
}
}
System.out.println(ans+"\n");
}
}
-> 오답 (런타임 에러)
#include <bits/stdc++.h>
using namespace std;
int main(void) {
string str;
cin >> str;
int i = 0;
bool flag = true;
while(i < str.length()) {
if (str[i] == 'p' && str[i+1] == 'i') {
i+=2;
} else if (str[i] == 'k' && str[i+1] == 'a') {
i+=2;
} else if (str[i] == 'c' && str[i+1] == 'h' && str[i+2] == 'u') {
i+=3;
} else {
flag = false;
break;
}
}
if (flag) {
cout << "YES\n";
} else {
cout << "NO\n";
}
}
-> 이건 정답!
쉬운 문제인데... 자바로 풀때는
package backjun;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Picachu {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
StringBuilder sb = new StringBuilder(str);
String ans = "YES";
int i = 0;
while(i< sb.length()) {
if (i+1 < sb.length() && sb.charAt(i) == 'p' && sb.charAt(i+1) == 'i') {
i+=2;
} else if (i+1 < sb.length() && sb.charAt(i) == 'k' && sb.charAt(i+1) == 'a') {
i+=2;
} else if (i+2 < sb.length() && sb.charAt(i) == 'c' && sb.charAt(i+1) == 'h' && sb.charAt(i+2) == 'u') {
i+=3;
} else {
ans = "NO";
break;
}
}
System.out.println(ans+"\n");
}
}
이와 비슷하게 풀어야 한다. 뭐 이거만 답인것이 아니긴 하지만..
그냥 신기해서 포스팅 해봅니다.
피카츄!
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2644번 촌수계산 (0) | 2020.05.06 |
---|---|
[백준] 4963번 섬의 갯수 (0) | 2020.05.05 |
[백준] 2178번 미로탐색 (0) | 2020.05.04 |
[백준] 1260번 DFS와 BFS (0) | 2020.05.03 |
[백준] 9086번 문자열 (0) | 2020.04.30 |