7일차
코딩테스트 입문을 위한 기초 트레이닝
프로그래머스 코딩테스트 연습에는 코딩테스트 입문과 기초 트레이닝이 존재한다. 지금까지 코딩테스트 입문을 했는데 전체적인 난이도는 기초 트레이닝보다 조금 더 높다. 그러나 6일차부터 막혀서 기초 트레이닝에서 난이도가 높은 문제를 다시 잡고 다시 도전하려 한다.

한 120문제 정도 있었는데 100문제를 남기고 다 풀었다. 남은 100문제를 다 풀고 난 후 다시 입문으로 넘어가야겠다.
그리고 풀다보니 나에게 부족한 부분이 무엇인지를 알게 되었다. 나는 수학적으로 접근하는 문제들에게 약했다. 그래서 수학적인 문제를 풀 때는 우선 노트로 접근방법을 적고 하려고 한다. 지금까지는 머리를 데굴데굴 굴리면 어느 정도 가능했는데, 이제는 안되겠다.
오늘의 문제
n개 간격의 원소들
정수 리스트 num_list와 정수 n이 주어질 때, num_list의 첫 번째 원소부터 마지막 원소까지 n개 간격으로 저장되어있는 원소들을 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요.
제한사항
- 5 ≤ num_list의 길이 ≤ 20
- 1 ≤ num_list의 원소 ≤ 9
- 1 ≤ n ≤ 4
예시
| num_list | n | result |
|---|
| [4, 2, 6, 1, 7, 6] | 2 | [4, 6, 7] |
| [4, 2, 6, 1, 7, 6] | 4 | [4, 7] |
접근방법
이 문제는 배열의 인덱스에 접근하는 것이 핵심이다. n만큼 크기를 갖고 있는 인덱스에 접근하여 새로운 배열을 만들면 된다. 이 문제는 메서드를 잘 이해하고 있으면 된다.
풀이
function solution(num_list, n) {
var answer = [];
answer = num_list.filter((x, i) => x = i % n == 0);
return answer;
}
핵심은 filter() 메서드에 두 번째 인자인 i를 넣어 원소의 인덱스를 아는 것이다. 인덱스 i와 정수 n으로 나눴을 때 0이 될 때가 n의 간격이다. 그 때 x를 배열에 넣어주면 문제를 푸는 답이 나온다.
개인적으로는 filter() 메서드는 원소 인자만을 갖는 것이 아니라 인덱스 인자도 갖을 수 있다는 점을 중요하게 생각하여 문제를 풀었다.
정리하기
메서드를 잘 이해하기.🏃
코딩 문제를 풀면서 filter() 메서드를 사용했지만, 두 번째 인자가 있는지도 몰랐고, 그 인자가 원소의 인덱스를 나타내는 지도 몰랐다. 다른 사람들의 풀이를 보면서 이런 방법도 있구나를 매일 깨닫고 내 것으로 만들려고 한다.
매일 이런 노력을 하지 않았더라면, 이 문제를 조금 더 어렵게 풀지 않았을까 싶다. 그러니 코딩 입문이라는 벽에 막혀서 나아가지 못하고 포기하는 것보다 다시 기초를 도전하여 벽을 넘을 계단을 쌓아가야곘다.