-
[Programmers] 택배상자 / ⭕Algorithm/Programmers 2024. 10. 6. 13:59
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 제출 코드 (23분 20초 / 스택)
import java.util.*; class Solution { public int solution(int[] order) { int answer = 0; ArrayDeque<Integer> dq = new ArrayDeque<>(); int num = 1; int idx = 0; while(idx < order.length) { if(num < order[idx]) { dq.add(num++); } else if(num == order[idx]) { answer++; idx++; num++; } else { if(!dq.isEmpty() && dq.pollLast() == order[idx]) { answer++; idx++; } else { break; } } } return answer; } }
2. 구현 로직
- order를 앞에서부터 하나씩 탐색
- 만약, order[idx] > num이라면 스택에 삽입 / num 증가
- 만약, order[idx] == num 이라면 idx, num answer +1 증가
- 만약, order[idx] < num이라면 스택 peek == order[idx] 인지 확인하고 같다면 answer, idx++
- 아니면 반복문 종료 및 정답 추출
3. 유의할 점
- order[idx] == num 일 경우에도 num을 증가시켜야 한다.
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers] 두 큐 합 같게 만들기 / ⭕ (0) 2024.10.07 [Programmers] 할인 행사 / ⭕ (1) 2024.10.06 [Programmers] 우박수열 정적분 / ⭕ (0) 2024.10.06 [Programmers] 숫자 카드 나누기 / ⭕ (0) 2024.10.05 [Programmers] 점 찍기 / ❌ (0) 2024.10.05 - order를 앞에서부터 하나씩 탐색