Leetcode Java Build an Array With Stack Operations
업데이트:
문제
코드
class Solution {
public List<String> buildArray(int[] target, int n) {
List<String> list = new ArrayList<>();
int i = 0;
int j = 0;
while (i++ <= n && j < target.length) {
list.add("Push");
if (target[j] == i) {
j++;
} else {
list.add("Pop");
}
}
return list;
}
}
결과
설명
- [1, n] 범위 내 값들을 이용하여 아래의 규칙대로 순차적으로 증가하는 값이 저장된 정수 배열인 target과 동일한 배열인 stack을 만들 수 있는 연산 순서를 반환하는 문제이다.
- target을 만들기 위한 기본 연산은 아래와 같다.
- “Push”는 stack의 뒤에 값을 넣어준다.
- “Pop”은 stack의 뒤에 있는 값을 빼준다.
- [1, n] 범위 내 값들을 순서대로 사용하여 위의 연산만 수행 가능하다.
- 범위 내 값들만 순차적으로 사용하여 연산을 수행한다.
- target을 만들기 위한 기본 연산은 아래와 같다.
- 문제 풀이에 필요한 변수를 정의한다.
- list는 연산을 순차적으로 넣을 변수로, ArrayList로 초기화한다.
- i는 [1, n] 범위 내 위치 j는 target 내 위치를 저장할 변수로, 둘 다 0으로 초기화한다.
- i가 n 이하이면서 j가 target의 길이 미만까지 아래를 반복하면서 i를 증가시켜준다.
- list에 “Push”를 넣고 값을 추가해준다.
- target[j]의 값과 i와 동일한 경우, j를 증가시키고 아니면 list에 “Pop”을 추가하여 값을 제거한 것을 표시해준다.
- 반복이 완료되면 연산 순서가 저장된 list를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기