https://www.acmicpc.net/problem/1316
위와 같이 알고리즘 문제이다.
문제를 요약해보자.
- case가 몇 개 인지 입력 받는다.
- (1)에서 입력한 case만큼의 단어를 입력한다.
2-1) 알파벳 소문자로 이루어진 단어이고, 문제 조건처럼 앞에 나온 단어가
한자리 이상 건너 뛰어있는 단어는 count하지 않는다.- count를 출력한다.
생각보다 간단한 문제 같지만
단어 입력의 첫번째와 두번째, 세번째, 네번째를 어떻게 비교하고 조건을 어떻게 줄지 막막했다.
계속 보다가 문제가 풀리지 않아 해설을 보았다.
package baekjoon.solution;
import java.util.Scanner;
public class Baekjoon_1316 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int inputNum = scan.nextInt();
int cnt = 0;
for (int T = 0; T < inputNum; T++) {
String str = scan.next();
int[] arr = new int[26];
char prev = 0;
//이전 단어를 받을 코드!
for (int i = 0; i < str.length(); i++) {
if (i == 0) {
prev = str.charAt(i);
arr[prev - 97] = 1;
continue;
}
if (prev == str.charAt(i)) {
continue;
} else {
if (arr[str.charAt(i) - 97] != 1) {
arr[str.charAt(i) - 97] = 1;
prev = str.charAt(i);
} else {
cnt--;
break;
}
}
}
cnt++;
}
System.out.println(cnt);
}
}
코드를 보고 어렵다고 생각이 들었는데, 쉬운 문제라고한다!
아직 if문이 어떻게 돌아가는지 정확하게 알고있지 못한것 같다.
2-3일 뒤에 다시 문제를 풀어보도록 하겠다.