이 문제를 풀 때 로직을 제대로 생각하지 못했다. 

아스키코드값을 이용, 함수로 구현, 연속된 문자인지 알기 위해 prev 변수 사용하는 것 까지 생각하지 못해 문제 푸는데 애를 먹었다.

 

 처음엔 문자열 인덱스로 접근해야하나 싶었는데 아무리 생각해도 적절한 로직이 떠오르지 않았고 자꾸 산으로 가는 느낌이었다.

 두 번째로는 함수로 처리할 생각을 못해서 반복문을 몇 개씩이나 계속 사용해야 되는 거 같아 시간복잡도가 너무 커져 적절하지 않다는 생각을 했다.

 


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;



public class Main {

    static BufferedReader br;
    static int number;

    public static void main(String[] args) throws IOException {

          br = new BufferedReader(new InputStreamReader(System.in));
          number = Integer.parseInt(br.readLine());

          int count = 0;
          for(int i=0;i<number;i++) {
              if(check()) {
                 count++;
              }
          }

         System.out.println(count);

   }

   public static boolean check() throws IOException {

        boolean[] check = new boolean[26];
        String st = br.readLine();

        char prev = ' ';
        for(char c : st.toCharArray()) {
           if(check[c - 'a']){
             if(prev == c) {
                continue;
             }else {
                return false;
             }

           }else {
               check[c - 'a'] = true;
               prev = c;
          }
       }

       return true;
    }
}


문자열 문제를 많이 안풀었더니 확실히 많이 까먹은 거 같다는 생각이 들었다. 또 알고리즘 문제 풀 때는 뭐랄까. 머리가 좀 굳는 느낌이다. 알고리즘 문제를 푼다하면 일단 겁부터 먹어서 그런 거 같기도하다.. 그래서 생각이 잘 안난다.

 계속 꾸준히 풀어서 무서움을 좀 없애야겠다.

 

+ Recent posts