[99클럽 코테 스터디 34일차 TIL] 프로그래머스 햄버거 만들기

말하는 감자·2024년 11월 30일
0
post-thumbnail

99클럽 코테 스터디 34일차 TIL

💙 JAVA 비기너

📌 오늘의 학습 키워드

  • 배열

📌 공부한 내용

📍 오늘의 문제

📍 작성 코드

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

📌 오늘의 회고

사실 첫번째 코드는 실패했다.

📍 실패한 첫번째 코드

class Solution {
    public int solution(int[] ingredient) {
        int answer = 0;
        
        String ingredients = "";
        
        for(int igdt : ingredient) {
            ingredients += igdt;
            
            if(ingredients.contains("1231")) {
                answer++;
                ingredients = ingredients.replace("1231", "");
            }
        }

        return answer;
    }
}

단순하게 ingredient를 문자열로 만들어서 "1231"이 있을 때마다 answer를 1 증가해주고 문자열에서 "1231"을 지우면 되는 거 아니야!? 하고 작성했는데

두둥탁...!!!

시간 초과로 인해 실패하였다...

아니... 왜? 그럼 ArrayList로 해야하는건가?? 그럼 한번 비교할 때마다 4개씩...?? 하고 검색하다가 StringBuilder의 존재를 기억하게 되었다.

그래서 StringBuilder로 구현해보려고 했으나 너무 오랜만인 까닭에 다시 공부해야했다.

StringBuilder sbingredient를 하나씩 넣어주고 sb의 길이가 4이상이 되면 마지막 4개의 항목에 "1231"이 있는지 확인한다. 마지막 4개만 검사하는 이유는 for문이 돌면서 이미 앞에 있는 요소들도 확인했기 때문이다.

마지막 4개의 항목에 "1231"이 있다면 sb에서 "1231"을 삭제하고 answer를 1 증가해준다.

📑 StringBuilder 공부자료

https://myeongju00.tistory.com/61

profile
나는 말하는 감자다

0개의 댓글