728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/133502
풀이
Level 1 문제인데, 생각보다 시간초과에 걸려서 오래 걸림,,, ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
stack으로도 풀 수 있었을 것 같은데, 고집이 생겨서 어떻게든 String으로 풀려고 했음
String.replace("1231", "")은 1231을 다 한번에 바꾸는 거라 오답
String.replaceFirst("1231", "")은 시간초과나서 통과 못함
StringBuilder랑 StringBuilder의 메서드를 사용해서 써야됨!
자세한건 주석으로 !
코드
// 코딩테스트 연습 - 연습문제 - 햄버거 만들기
// https://school.programmers.co.kr/learn/courses/30/lessons/133502
package PROGRAMMERS.level1;
public class Num133502_햄버거만들기 {
static class Solution {
public int solution(int[] ingredient) {
int answer = 0;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < ingredient.length; i++) {
sb.append(ingredient[i]);
// 길이가 3보다 크고 마지막 4자리가 "1231"이면
if (sb.length() > 3 && sb.substring(sb.length() - 4, sb.length()).equals("1231")) {
answer++;
sb.delete(sb.length() - 4, sb.length()); // sb에서 마지막 4개가 햄버거란 뜻이니까 햄버거 없애기
}
}
return answer;
}
}
public static void main(String[] args) {
Solution sol = new Solution();
System.out.println(sol.solution(new int[]{2, 1, 1, 2, 3, 1, 2, 3, 1}));
System.out.println(sol.solution(new int[]{1, 3, 2, 1, 2, 1, 3, 1, 2}));
}
}
728x90