문제
https://school.programmers.co.kr/learn/courses/30/lessons/133502#
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
해답
import java.util.*;
class Solution {
public int solution(int[] ingredient) {
int answer = 0;
Stack<Integer> ing = new Stack<>();
int size = 0;
for(int ingN : ingredient){
ing.push(ingN);
size = ing.size();
if(size>3 && ing.get(size-1)==1){
if(ing.get(size-2)==3 && ing.get(size-3)==2 && ing.get(size-4)==1){
ing.pop();
ing.pop();
ing.pop();
ing.pop();
answer++;
}
}
}
return answer;
}
}
해설
일단 stack에 내용물을 추가한 후 내용물의 개수와, 그리고 들어간 숫자에 따라 판단하여 stack의 개수를 줄이고 반복진행하는 문제였다.
로직의 순서에서 개수를 먼저검사했다가 딱 4개일때 처리되는 경우가 있어서 곤욕을 치렀다.
로직에서 먼저 일어나야할 일에 대한 조건을 따지는 생각을 더 키워보아야할 것 같다.
'Coding Test > JAVA 코딩테스트 풀이정리(프로그래머스)' 카테고리의 다른 글
프로그래머스 스쿨 Lv.1 - 둘만의 암호(문자열 변환 규칙) (0) | 2024.11.04 |
---|---|
프로그래머스 스쿨 Lv.0 - 안전지대(배열 예외처리 및 반복처리) (0) | 2024.10.31 |
프로그래머스 스쿨 Lv.1 - JadenCase 문자열 만들기(조건에 따른 String 처리) (0) | 2024.10.29 |
프로그래머스 스쿨 Lv.1 - 유한소수 판별하기(유클리드 호제법으로 최대공약수 구하기) (0) | 2024.10.09 |
프로그래머스 스쿨 Lv.1 - 이진수 더하기 (0) | 2024.06.28 |