import java.util.Scanner;
public class croatia {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine(); //입력받음
int count = 0; //알파벳 숫자를 카운트할 변수 선언 및 초기화
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i); //입력받은 문장은 ch에 하나 씩 넣어주고
if(ch == 'c') { // 만약 ch 가 c 라면?
if(i < str.length() - 1) {
if(str.charAt(i + 1) == '=') { //만약 ch 다음 문자가 '=' 이라면?
// i+1 까지가 하나의 문자이므로 다음 문자를 건너 뛰기 위해 1 증가
i++;
}
else if(str.charAt(i + 1) == '-') {
i++;
}
}
}
else if(ch == 'd') {
if(i < str.length() - 1) {
if(str.charAt(i + 1) == 'z') {
if(i < str.length() - 2) {
if(str.charAt(i + 2) == '=') { // dz= 일 경우
i += 2;
}
}
}
else if(str.charAt(i + 1) == '-') { // d- 일 경우
i++;
}
}
}
else if(ch == 'l') {
if(i < str.length() - 1) {
if(str.charAt(i + 1) == 'j') { // lj 일 경우
i++;
}
}
}
else if(ch == 'n') {
if(i < str.length() - 1) {
if(str.charAt(i + 1) == 'j') { // nj 일 경우
i++;
}
}
}
else if(ch == 's') {
if(i < str.length() - 1) {
if(str.charAt(i + 1) == '=') { // s= 일 경우
i++;
}
}
}
else if(ch == 'z') {
if(i < str.length() - 1) {
if(str.charAt(i + 1) == '=') { // z= 일 경우
i++;
}
}
}
count++;
}
System.out.println(count);
}
}
String 문자열을 입력받고 알파벳 숫자를 카운트 할 변수 선언 및 초기화를 해줌
문자열의 크기만큼 for문을 반복하면서 charAt메소드로 ch 변수에 하나 씩 넣고 검사 해줌
만약 c=와 c-가 입력 되어 있다면 이 두 개의 문자를 하나의 문자로 보는 것이기 때문에 다음 반복문에서 = , - 을 참조할 필요가 없음
c인경우에 그 i + 1 즉, 그 다음 문자가 = , - 이면 count값을 증가 시켜 줌 그 과정에서 i를 증가시키고 for문을 한 바퀴 돌면서 다시 i가 증가 되기 때문에 c= 또는 c- 를 하나의 단어로 묶을 수 있음
하지만 만약 입력 값이 ‘aedzdz=ls=c’ 이고 i가 10일때 반복문을 생각해보면
i = 0이고 a는 count 1증가
i = 1이고 e는 count 1 증가
i = 2이고 d는 count 1증가
i = 3이고 z는 count 1 증가
i = 4이고 d다음 z= 이 있기 때문에 묶어서 count1 증가 i가 6으로 증가
i = 7되고 l 은 count 1증가
i = 8되고 s는 count 1증가
i = 9 되고 = 는 count 1 증가
이때 for문은 0부터 10까지 돌게 되어있음
i 가 =10 일때 c는 기존 코드인
if(str.charAt(i + 1) == '=')
조건을 검사하다가 문제가 발생함
if(str(10+1) 즉 , 이 문자열에서 마지막 c 다음의 문자는 존재하지 않는데, 그것을 charAt을 통해 참조하려고 하니까 에러가 발생 함
if(ch == 'c') { // 만약 ch 가 c 라면?
if(i < str.length() - 1) {
if(str.charAt(i + 1) == '=') { //만약 ch 다음 문자가 '=' 이라면?
// i+1 까지가 하나의 문자이므로 다음 문자를 건너 뛰기 위해 1 증가
i++;
새로운 if문을 추가하고 i 가 10일 때 10<10 이 되어 조건이 성립하지 않음 , 그래서 해당 조건문 블록을 건너 뛰고 count 값만 증가시킨 다음 for문을 탈출함