2021 네이버 웹툰 개발 챌린지 1차 코딩테스트 3번

하루히즘·2021년 7월 16일
0

설명

[문제 비공개]

풀이

import java.util.*;


public class Solution {
    public int solution(String s, String t) {
        int count = 0;

        StringBuilder builder = new StringBuilder();

        int index = 0;
        int block_length = t.length();
        while(index < s.length()) {
            builder.append(s.charAt(index++));
            // continue if current string's length not enough to check target.
            if(builder.length() < block_length) {
                continue;
            }

            // if built string is long enough to check block.
            // check changing block found.
            int startIndex = builder.length() - block_length;
            int endIndex = builder.length();// - 1; substring is exclusive

            // if target string is found, remove from builder and count.
            if(builder.substring(startIndex, endIndex).equals(t)) {
                count++;
                builder.delete(startIndex, endIndex);
            }      

        }

        return count;
    }
}

역시 문자열 처리 문제였는데 로직의 까다로움보다는 성능 처리에 더 중점을 둔 문제였다. 단순히 메서드만 호출하면 몇 줄 내로 요구사항은 구현 가능하지만 시간 복잡도에 걸리기 때문에 어떻게 하면 제약 사항을 만족하면서 문자열을 처리할 수 있을지 고민하게 된 문제였다.

테스트를 위해 직접 수십만 자리 문자열을 만들어서 돌려봤는데 시간 초과는 발생하지 않았다. 뿌듯했지만 시간을 너무 많이 써서 2번 문제를 제대로 못 풀어서 아쉽다.

profile
YUKI.N > READY?

0개의 댓글