import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
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();
int cnt = 0;
for (int i = 0; i < input.length(); i++) {
if (input.charAt(i) == 'c') {
if (input.charAt(i + 1) == '=' || input.charAt(i + 1) == '-') i++;
}
else if (input.charAt(i) == 'd') {
if (input.charAt(i + 1) == 'z') {
if (input.charAt(i + 2) == '=') i += 2;
}
else if (input.charAt(i + 1) == '-') i++;
}
else if (input.charAt(i) == 'l') {
if (input.charAt(i + 1) == 'j') i++;
}
else if (input.charAt(i) == 'n') {
if (input.charAt(i + 1) == 'j') i++;
}
else if (input.charAt(i) == 's') {
if (input.charAt(i + 1) == '=') i++;
}
else if (input.charAt(i) == 'z') {
if (input.charAt(i + 1) == '=') i++;
}
cnt++;
}
bw.write(String.valueOf(cnt));
bw.flush();
}
}
이녀석은..
로컬에서 테스트했을 때는 정상 작동 되는 듯이 보였습니다만
StringIndexOutOfBounds
에러가 났네요
조건문 안에서
.charAt(i + 1)
이나 .charAt(i + 2)
처럼 범위 밖의 요소에 접근하려고 해서 그런 것 같습니다..
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
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();
int cnt = 0;
for (int i = 0; i < input.length(); i++) {
if(input.charAt(i) == 'c' && i < input.length() - 1) {
if(input.charAt(i + 1) == '=' || input.charAt(i + 1) == '-') i++;
}
else if(input.charAt(i) == 'd' && i < input.length() - 1) {
if(input.charAt(i + 1) == '-') i++;
else if(input.charAt(i + 1) == 'z' && i < input.length() - 2) {
if(input.charAt(i + 2) == '=') i += 2;
}
}
else if((input.charAt(i) == 'l' || input.charAt(i) == 'n') && i < input.length() - 1) {
if(input.charAt(i + 1) == 'j') i++;
}
else if((input.charAt(i) == 's' || input.charAt(i) == 'z') && i < input.length() - 1) {
if(input.charAt(i + 1) == '=') i++;
}
cnt++;
}
bw.write(String.valueOf(cnt));
bw.flush();
}
}
조건문에
i < input.length() - 1
이나 i < input.length() - 2
와 같은 조건을 추가해서
StringIndexOutOfBounds
에러를 피할 수 있도록 수정해주었더니
정상적으로 채점된 것을 볼 수 있었습니다!
뒤에 접근할 게 없으면
알아서 어련히 처리할 수 있을 거라고 생각해버렸네요..
조심해야겠습니다..
이상입니다.