문제 링크
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
접근 방법
List로 변환해 인덱스까지 잘라줍니다.
소스 코드
import java.util.*;
import java.util.stream.*;
class Solution {
public int[] solution(int[] arr, int[] query) {
List<Integer> arrayList = Arrays.stream(arr)
.boxed()
.collect(Collectors.toCollection(ArrayList::new));
for (int i = 0; i < query.length; i++) {
if (i % 2 == 0) {
arrayList.subList(query[i] + 1, arrayList.size()).clear();
} else {
arrayList.subList(0, query[i]).clear();
}
}
return arrayList.stream().mapToInt(Integer::intValue).toArray();
}
}
코드 설명
문제에서 요구하는 대로 짝수일 때는 query[i] 인덱스 뒤로 없애고, 홀수일 때는 앞을 잘라 없앴습니다.
하지만 계속 자를 필요 없이, 잘라야 되는 길이를 다 더한 후, 마지막에만 실제로 잘라주는 방법이 있었습니다.
개선 코드
import java.util.*;
class Solution {
public int[] solution(int[] arr, int[] query) {
int s = 0, e = arr.length - 1;
for (int i = 0; i < query.length; i++) {
if (i % 2 == 0) {
e = s + query[i];
} else {
s += query[i];
}
}
return Arrays.copyOfRange(arr, s, e + 1);
}
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 JAVA] 42839. 소수 찾기 (0) | 2024.07.16 |
---|---|
[프로그래머스 JAVA] 181832. 정수를 나선형으로 배치하기 (0) | 2024.06.20 |
[프로그래머스 C++] 176963. 추억 점수 (0) | 2024.05.16 |
[프로그래머스 C++] 176962. 과제 진행하기 (0) | 2024.05.15 |
[프로그래머스 C++] 12906. 같은 숫자는 싫어 (0) | 2024.05.14 |