TIL

프로그래머스 알고리즘 문제풀이 햄버거 만들기 (시간 초과)

everyday-spring 2024. 8. 22. 22:52

https://school.programmers.co.kr/learn/courses/30/lessons/133502

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제가 길게 적혀있긴 하지만 로직적으로 복잡한 문제는 아니다.

문제는 시간초과

class Solution {
    public int solution(int[] ingredient) {
        int answer = 0;

        StringBuilder sb = new StringBuilder();

        for(int n : ingredient) {
            sb.append(n).append("");
        }

        String str = sb.toString();
        while (str.contains("1231")){
            str = str.replaceFirst("1231", "");
            answer++;
        }

        return answer;
    }
}

단순하게 정수형 배열을 문자열로 변환하고

replace를 사용했는데 시간 초과로 실패했다

 

class Solution {
    public int solution(int[] ingredient) {
        int answer = 0;
        
        StringBuilder sb = new StringBuilder();
        for (int n : ingredient) {
            sb.append(n); 
            
            
            if (sb.length() >= 4 && sb.subSequence(sb.length() - 4, sb.length()).equals("1231")) {
                answer++;
                sb.delete(sb.length() - 4, sb.length());  
            }
        }
        
        return answer;
    }
}

StringBuilder에 하나씩 넣으면서 확인작업을 하게되면

시간 초과가 나오지 않는다