목차
문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내풀이
import java.util.Stack;
class Solution{
public int solution(int[] ingredient) {
Stack<Integer> stack = new Stack<>();
int answer = 0;
for (int i : ingredient)
{
stack.push(i);
int sz = stack.size();
if (sz>=4 && stack.peek() == 1)
{
if (stack.get(sz-2) == 3 &&
stack.get(sz-3) == 2 &&
stack.get(sz-4) == 1 )
{
answer ++;
for(int j = 0; j<4; j++)
stack.pop();
}
}
}
return answer;
}
public static void main(String[] args){
// int[] ingredient = new int[]{2, 1, 1, 2, 3, 1, 2, 3, 1};
int[] ingredient = new int[]{1, 3, 2, 1, 2, 1, 3, 1, 2};
Solution sol = new Solution();
System.out.println("Answer :: "+sol.solution(ingredient));
}
}
나는 STACK을 활용하였지만, 다른사람이 iint배열만 사용하여 푼 것을 보았다.
풀이는 다음과 같다.
다른사람 풀이
Class Solution {
public int solution(int[] ingredient) {
int[] stack = new int[ingredient.length];
int sp = 0;
int answer = 0;
for (int i : ingredient) {
stack[sp++] = i;
if (sp >= 4 && stack[sp - 1] == 1
&& stack[sp - 2] == 3
&& stack[sp - 3] == 2
&& stack[sp - 4] == 1) {
sp -= 4;
answer++;
}
}
return answer;
}
}
'ALGORITHMS > SOLUTION' 카테고리의 다른 글
[Programmers] 큰 수 만들기 (0) | 2024.04.06 |
---|---|
[PYTHON : 프로그래머스] 전화번호 목록 (0) | 2023.07.23 |
[백준 : PYTHON] 1715_카드정렬하기 (0) | 2023.05.25 |
[프로그래머스:JAVA] 2차원으로 만들기 (0) | 2023.05.24 |
[프로그래머스:PYTHON] 공던지기 (0) | 2023.05.24 |