[알고리즘] 백준1316 -문자열

https://www.acmicpc.net/problem/1316

위와 같이 알고리즘 문제이다.

문제를 요약해보자.

  1. case가 몇 개 인지 입력 받는다.
  2. (1)에서 입력한 case만큼의 단어를 입력한다.
    2-1) 알파벳 소문자로 이루어진 단어이고, 문제 조건처럼 앞에 나온 단어가
    한자리 이상 건너 뛰어있는 단어는 count하지 않는다.
  3. 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일 뒤에 다시 문제를 풀어보도록 하겠다.