▶splice () & slice() 사용한 간단한 기초문제가 있어서 정리해보고자 합니다.
문제설명
정수 배열 arr와 query가 주어집니다.
query를 순회하면서 다음 작업을 반복합니다.
짝수 인덱스에서는 arr에서 query [i] 번 인덱스를 제외하고 배열의 query [i] 번 인덱스 뒷부분을 잘라서 버립니다.
홀수 인덱스에서는 arr에서 query[i]번 인덱스는 제외하고 배열의 query [i] 번 인덱스 앞부분을 잘라서 버립니다.
위 작업을 마친 후 남은 arr의 부분 배열을 return 하는 solution 함수를 완성해 주세요.
제한사항
- 5 ≤ arr의 길이 ≤ 100,000
- 0 ≤ arr의 원소 ≤ 100
- 1 ≤ query의 길이 < min(50, arr의 길이 / 2)
- query의 각 원소는 0보다 크거나 같고 남아있는 arr의 길이 보다 작습니다.
입출력 예 & 설명
입출력 예 #1
- 이번에 매번 처리할 query의 값과 처리 전후의 arr의 상태를 표로 나타내면 다음과 같습니다.
- 따라서 [1, 2, 3]을 return 합니다.
나의 풀이
문제를 보자마자 splice()나 slice() 함수를 사용해야겠다고 생각이 들었습니다.
먼저 splice()를 사용한 코드입니다.
query를 순회하면서 문제의 조건에 맞게 splice()를 해주면 됩니다.
먼저 짝수 인덱스일때는 query[i]번query [i] 번 인덱스를 제외하고 배열의 query [i] 번 인덱스 뒷부분을 잘라서 버려주고, 홀수 인덱스일때는 query[i]번query [i] 번 인덱스는 제외하고 query [i] 번 인덱스의 앞부분을 버려줘야 하기 때문에 배열의 요소를 제거하고 새로운 배열을 반환하는 splice() 함수를 사용해 주었습니다.
다른 풀이
전체적인 구조는 "나의 풀이"와 비슷하지만 다른 점은 forEach()와 slice() 함수를 사용해 주었습니다.
기본 for문이 아닌 forEach를 사용해서 query를 순회해 줍니다.
만약에 짝수라면 "나의 풀이"에서 말했듯이 먼저 짝수 인덱스일 때는query [i] 번 인덱스를 제외하고 배열의 query[i]번 인덱스 뒷부분을 잘라서 버려주고, 홀수 인덱스일 때는query [i] 번 인덱스는 제외하고 query[i]번 인덱스의 앞부분을 버려줘야 합니다.
이 말은
즉 짝수 인덱스일 때는 query [i] 번 인덱스를 포함해서 앞의 요소를 살려야 된다는 얘기고, 홀수 인덱스일 때는 qquery [i] 번 인덱스를 포함해서 뒷부분을 살려야 한다는 얘기입니다.
그렇기 때문에 slice()를 사용해서 조건에 맞게 잘라준 배열을 다시 arr에 저장하여 마무리해 줍니다.
[JavaScript] 문자열 자르기 함수 substr() / substring() / slice() / splice() / split()
자바스크립트에서 문자열, 배열을 자르기 위해서는 substr(), substring(), slice(), splice(), split() 함수를 사용하면 됩니다. 1. substr() "문자열".substr(startIndex, length); //startIndex : 시작위치, length : 길이 substr
pixx.tistory.com
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 정수를 나선형으로 배치하기 (JavaScript) (1) | 2024.02.24 |
---|---|
[프로그래머스] 주사위 게임 3 (JavaScript) (0) | 2024.02.24 |
[프로그래머스] 배열 만들기 2 (JavaScript) (0) | 2024.02.21 |
[프로그래머스] 전국 대회 선발 고사 (JavaScript) (0) | 2024.02.20 |
[프로그래머스] 그림 확대 (JavaScript) (0) | 2024.02.19 |