프로그래머스 - 햄버거 만들기

박철현·2023년 9월 7일

프로그래머스

목록 보기
51/80

프로그래머스 - 햄버거 만들기

class Solution {
	public int solution(int[] ingredient) {
		// 빵 - 야채 - 고기 - 빵 햄버거만 포장
		// 1 : 빵, 2 : 야채, 3: 고기
		// 1. 재료 String화 -> 1 2 3 1 문자열을 제거하고 햄버거 개수 증가
		// 2. 없어지면 중지
		int count = 0;
		StringBuilder sb = new StringBuilder();

		for(int i : ingredient) {
			sb.append(i);

			if(sb.length() >= 4) {
				int lastIndex = sb.length() - 1;

				if(sb.charAt(lastIndex - 3) == '1' && sb.charAt(lastIndex - 2) == '2' && sb.charAt(lastIndex - 3) == '3' && sb.charAt(lastIndex) == '1') {
					sb.delete(lastIndex-3, lastIndex + 1);
					count++;
				}
			}
		}
		return count;
	}
}
  • 재료를 넣어가면서, 4개 이상이 되면 햄버거 포장할 수 있는지 확인한다.
  • 포장할 수 있다면 StringBuilder에서 삭제시킨다.
    • 하나씩 집어넣으므로 검사할 때 for문 검사 안해도 됨
  • StringBuilder 메서드
    • delete(a, M+1) : a~M까지 삭제
    • deleteCharAt(a) : a위치 삭제
      • delete(a, a+1)과 같음
    • insert(2, "llo") : 2번 인덱스에 "llo" 문자열 삽입
    • StringBuilder 메서드 출처
  • 기존에는 배열 전체를 stream으로 하고 String으로 만들고, 1231 패턴을 subString 했는데 타임아웃이 떴다..
  • subString 말고 replace("1231", "")도 해봤는데, replace로 없어져서 땡겨진 문자열이 다시 1231을 만들면 이것 역시도 바꿔버린다.. 너무 열일함..
profile
비슷한 어려움을 겪는 누군가에게 도움이 되길

0개의 댓글