21.05.28 기록

최대 1 분 소요

  • 백준 알고리즘 2941 풀이 완료

    • 2941 풀이 (메모리 14.21MB, 시간 132ms로 통과)
      조건문이 너무 많아서 이렇게 푸는 게 맞나…? 싶었지만 다른 풀이들도 나와 같은 로직이었다.
      하지만 내 풀이는 2% 부족해서 IndexOutOfBounds 오류가 났다…
      결국 해설코드를 참고하여 겨우 통과하였다.
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class B2941 {
        public static void main(String[] args) {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
            try {
                String input = br.readLine();
    
                int len = input.length();
                int cnt = 0;
    
                for(int i = 0; i < len; i++) {
    
                    char ch = input.charAt(i);
    
                    if( ch == 'c' && i < len-1 ) {
                        if(input.charAt(i+1) == '=' || input.charAt(i+1) == '-') { i++; }
                    }
    
                    else if( ch == 'd' && i < len-1 ) {
                        if(input.charAt(i+1) == '-') { i++; }
                        else if(input.charAt(i+1) == 'z' && i < len-2 ) {
                            if(input.charAt(i+2) == '=') { i += 2; }
                        }
                    }
    
                    else if( (ch == 'l' || ch == 'n') && i < len-1 ) {
                        if(input.charAt(i+1) == 'j') { i++; }
                    }
    
                    else if( (ch == 's' || ch == 'z') && i < len-1 ) {
                        if(input.charAt(i+1) == '=') { i++; }
                    }
    
                    cnt++;
                }
                System.out.println(cnt);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    

카테고리:

업데이트: