문제 출처 : https://www.acmicpc.net/problem/2941
위의 문제를 해결하기 위해서 사용한 메소드는 substring()메소드 입니다. substring()은 문자열을 슬라이싱 해주는 메소드로 substring(int index)와 substring(int start, int end) 두가지가 있습니다. substring(int index)의 경우 index부터 문자열 끝까지 반환해주는 메소드이고 substring(int start, int end)의 겨우 문자열의 인덱스가 start부터 end - 1까지 반환해주는 메소드 입니다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Arrays;
public class Main {
static String[] cro = {"c=","c-","dz=","d-","lj","nj","s=","z="};
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
int answer = 0;
for(int i = 0; i < str.length(); i++){
if(i >= str.length()-1){
answer += 1;
break;
}
String check = str.substring(i,i+2);
// dz=인 경우
if(check.equals("dz")){
if(i == str.length()-2){
answer +=2;
break;
}
check = str.substring(i,i+3);
if(contains(cro,check)){
answer += 1;
i += 2;
continue;
}
}
// 크로아티아어 포함된 경우
if(contains(cro,check)){
answer += 1;
i+=1;
}
else{
answer += 1;
}
}
System.out.println(answer);
}
public static boolean contains(String[] cro, String check){
return Arrays.asList(cro).contains(check);
}
}