본문 바로가기
알고리즘/프로그래머스

[프로그래머스 / 햄버거 만들기 / JAVA]

by KDW999 2023. 1. 24.

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

 

프로그래머스

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

programmers.co.kr

 

문제 접근

값을 저장하고 저장된 데이터 내에서 1231을 검사하고자 하였다.

처음엔 for문에서 ingredient 배열의 값을 다 저장한 뒤  다른 반복문에서  저장된 데이터들을 검사하는 방법을 썼었는데 반복문이 여러 번 있어서 그런지 시간초과에 걸렸다.그래서 첫 for문 내에서 값을 저장함과 동시에 저장된 데이터 값이 4개가 되면 1231이 되는지 검사하였다.

 

* List의 요소 값을 삭제할 때 뒤에 값이 있을 시엔 뒤의 값이 앞 자리에 당겨와진다. / 맨 마지막 요소를 삭제할 땐 앞에 있던 값이 마지막 값이 된다.

 

import java.util.*;
class Solution {
     public int solution(int[] ingredient) {
        int answer = 0;
        ArrayList<Integer> ham = new ArrayList<Integer>();

        for(int i=0; i<ingredient.length; i++) {
        	ham.add(ingredient[i]);
        	// 값을 하나씩 넣으면서 1231 검사
        	if(ham.size() >= 4 && // 오류 안나게 크기 4부터
        	   ham.get(ham.size()-4) == 1 &&
        	   ham.get(ham.size()-3) == 2 &&
        	   ham.get(ham.size()-2) == 3 &&
        	   ham.get(ham.size()-1) == 1) {
        		answer++;
        		for(int j=0; j<4; j++) ham.remove(ham.size()-1); // 1231에서 뒤에 1부터 삭제
        	}
        }
        return answer;
     }
}

 

댓글