프로그래머스 기초

ㅇㅖㅈㅣ·2024년 5월 14일
0

Today I Learned

목록 보기
90/93
post-thumbnail

알고리즘 문제를 오랜만에 풀었기 때문에 기초부터 다시 시작했다.

⛓️ n개 간격의 원소들

문제

정수 리스트 num_list와 정수 n이 주어질 때, num_list의 첫 번째 원소부터 마지막 원소까지 n개 간격으로 저장되어있는 원소들을 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요.

제한사항

5 ≤ num_list의 길이 ≤ 20
1 ≤ num_list의 원소 ≤ 9
1 ≤ n ≤ 4


나의 풀이

function solution(num_list, n) {
    let answer = [];
    
    for (let i=0; i<num_list.length; i+=n) {
        answer.push(num_list[i])
    }
    return answer;
}

for 반복문으로 접근하였는데 평소에는 i++을 주로 사용했었다. 그런데 하나씩 더해주지 않고 정도 n을 더해주는 식으로 접근해서 풀었다.


다른사람의 풀이


const solution = (num_list, n) => num_list.filter((_, i) => !(i % n))

filter메서드의 콜백함수에서 배열의 요소는 사용하지 않고 그 요소의 인덱스만 받아서 논리부정연산자로 풀었다...
num_list 배열에서 인덱스가 n의 배수인 요소들만 걸러내서 새로운 배열로 반환하는 것이다.


⛓️ 순서바꾸기

문제

정수 리스트 num_list와 정수 n이 주어질 때, num_listn 번째 원소 이후의 원소들과 n 번째까지의 원소들로 나눠 n 번째 원소 이후의 원소들을 n 번째까지의 원소들 앞에 붙인 리스트를 return하도록 solution 함수를 완성해주세요.

제한사항

2 ≤ num_list의 길이 ≤ 30
1 ≤ num_list의 원소 ≤ 9
1 ≤ nnum_list의 길이


나의 풀이

function solution(num_list, n) {
    const front = num_list.slice(n,num_list.length)
    const back = num_list.slice(0,n)
    
    return [...front,...back];
}

slice()와 스프레드 연산자를 사용하여 풀어보았다.
for, if문 위주로 풀어오다가 잘라내기로 접근하려니 머리를 좀 짜냈다...


다른사람의 풀이

function solution(num_list, n) {
    return [...num_list.slice(n), ...num_list.slice(0, n)]
}

이렇게 심플할수가;

profile
웰씽킹_나는 경쟁력을 갖춘 FE개발자로 성장할 것이다.

0개의 댓글