๐ก ์ข์ ์ฝ๋ ! start , end ์ด์ฉํด์ ํ๊ธฐ
start ๊ฐ์ ํ์์ธ qeury ๊ฐ์ด ๋๊ณ
end ๊ฐ์ ์ง์์ธ (query ๊ฐ - 1) ์ด ๋๋ค! ์ด๋ start ๋ฅผ ๋ํด์ค์ผ ์ ์ฒด๊ธธ์ด๊ฐ ๋์์ end ๊น์ง ์ถ๋ ฅ์ด ๋จ.
๐ฌ Arrays.copyOfRange() :: ๋ฐฐ์ด์ ์ผ๋ถ๋ฅผ ๋ณต์ฌํ์ฌ ์ ๋ฐฐ์ด์ ์์ฑํฉ๋๋ค. ์ด ๋ฉ์๋๋ ์๋ณธ ๋ฐฐ์ด๊ณผ ๋ณต์ฌํ ์์์ ์์ ์ธ๋ฑ์ค์ ๋ ์ธ๋ฑ์ค๋ฅผ ์ธ์๋ก ๋ฐ์ต๋๋ค.
import java.util.*;
class Solution {
public int[] solution(int[] arr, int[] query) {
int start = 0; //์์๊ฐ ๊ธฐ๋ณธ๊ฐ
int end = arr.length - 1; //๋๊ฐ ๊ธฐ๋ณธ๊ฐ
for (int i = 0; i < query.length; i++) {
if (i % 2 == 0) { // ์ง์๋ฉด
end = start + query[i] - 1;
} else {
start += query[i]; // ์์ ์๋ผ์ผํจ => ์์๊ฐ ์กฐ์
}
}
return Arrays.copyOfRange(arr, start, end + 2); // ๋ฐฐ์ด ๋ณต์ฌ
}
}
๐ก ์ข์ ์ฝ๋ ! ์๋ฃ๊ตฌ์กฐ ํ ์ด์ฉํ๊ธฐ (ArrayList ๋ ์ฝ์ ์ญ์ ์ ๋นํจ์จ์ ์ธ ์๋ฃ๊ตฌ์กฐ์)
๐ฌ Deque ๋ฐํ :: ์์ชฝ ๋์์ ์์์ ์ฝ์ ๊ณผ ์ญ์ ๋ฅผ ์ง์ํ๋ ์ปฌ๋ ์ , ์ธํฐํ์ด์ค์ ํฌ๊ธฐ ์กฐ์ ๊ฐ๋ฅํ ๋ฐฐ์ด ๊ธฐ๋ฐ ๊ตฌํ์ผ๋ก, ์์ชฝ ๋์์์ ๋น ๋ฅธ ์์ ์ฝ์ ๋ฐ ์ญ์ ๋ฅผ ์ ๊ณต
๐ฌ pollLast() ๋ฉ์๋๋ ๋ฐํ์์ ๋ง์ง๋ง ์์๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฐํํฉ๋๋ค. ๋ง์ฝ ๋ฐํ๊ฐ ๋น์ด์์ผ๋ฉด null์ ๋ฐํํฉ๋๋ค.
๐ฌ .pollFirst() ๋ฉ์๋๋ ๋ฐํฌ(Deque)์์ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฐํ
import java.util.*;
class Solution {
public int[] solution(int[] arr, int[] query) {
Deque<Integer> list = new ArrayDeque<>(); // ๋ฐํ ์ ์ธ
for (int i : arr) { // ๋ฐํ์ arr ์ฝ์
list.add(i);
}
for (int i = 0; i < query.length; i++) {
int len = list.size();
int q = query[i];
if (i % 2 == 0) {
for (int j = 1; j < len - q; j++) {
list.pollLast(); // ๋ง์ง๋ง ์์ ์ ๊ฑฐ ํ ๋ฐํ
}
} else {
for (int j = 0; j < q; j++) {
list.pollFirst(); //์ฒซ๋ฒ์งธ ์์ ์ ๊ฑฐ ํ ๋ฐํ
}
}
}
int[] answer = new int[list.size()]; // ์ผ๋ฐ๋ฐฐ์ด๋ก ๋ฐํ
for (int i = 0; i < answer.length; i++) {
answer[i] = list.pollFirst(); //์ฒซ๋ฒ์งธ ์์ ์ ๊ฑฐ ํ ๋ฐํ
}
return answer;
}
}
์คํจํ ์ฝ๋ ใ ใ
import java.util.ArrayList;
class Solution {
public ArrayList <Integer> solution(int[] arr, int[] query) {
ArrayList <Integer> answer = new ArrayList<Integer>();
for (int n : arr) { // ๋์ ๋ฐฐ์ด์ ๊ธฐ์กด๋ฐฐ์ด๋ก ์ด๊ธฐํ
answer.add(n);
}
for (int i = 0; i < query.length; i++){ // 0 1 2 ๊น์ง => 3๋ฒ ๋๋ค
if ( i % 2 == 0 ){ //์ธ๋ฑ์ค ๊ฐ์ด ์ง์๋ฉด
for (int j = query[i] ; j <= answer.size(); j++){ //ํด๋น๊ฐ ๋ค๋ก ์ญ์
answer.remove(j);
}
}else {
for (int k = 0; k < query[i]; k++){
answer.remove(k);
}
}
}
return answer;
}
}