반응형
문제 설명
정수 start와 end가 주어질 때, start에서 end까지 1씩 감소하는 수들을 차례로 담은 리스트를 return하도록 solution 함수를 완성해주세요.
✅ 내 코드
function solution(start, end) {
let list = [];
for (i = start; i >= end; i--) {
list.push(i);
}
return list;
}
🙋♀️ 내 생각
-1씩을 빼줘야하기 때문에 for문을 사용했다.
초기값i를 10으로 설정하고 for문을 돌면서 -1을 해준다.
i가 end가 될때까지 반복하고 그 값들을 push를 이용해서 list에 담는다.
💻 내가 사용한 메서드
for문: for 반복문은 어떤 특정한 조건이 거짓으로 판별될 때까지 반복
for ([초기문]; [조건문]; [증감문])
문장
조건이 맞을때까지는 계속 반복되므로, end가 아닌값을 만날때까지는 계속 -1을 해준다.
push(): 배열의 끝에 하나 이상의 요소를 추가하고, 배열의 새로운 길이를 반환
Array.push()
전에 다른 문제를 풀면서도 공부했는데, push()를 하고 바로 리턴을 하면 배열의 값들이 나오는게 아니라 배열의 길이를 반환한다.
그래서 위의 코드와 같이 아래에서 따로 return list라고 해주어야한다.
이렇게 하면 정상적으로 배열안의 값들이 출력된다.
💻 다른사람 코드중에 배울 것
const solution = (start, end) => Array(start-end+1).fill(start).map((v,i)=>v-i);
풀면서도 분명히 for문이 아니라 map을 이용해서 더 간단하게 풀 수 있는 방법이 있을것 같은데 fill이 생각이 안났다 🥲
전에 다른 문제 풀면서 공부했었는데 문제풀면서 안떠오름 ㅎㅎㅎ ㅋㅋ
Array(): 새로운 Array 객체를 생성할 때 사용
- 인자가 하나이면 array의 길이이다.
그래서 위와 같이 Array(start-end-1)을 하면 저런 길이를 지닌 배열이 생성된다.
fill(): 배열의 시작 인덱스부터 끝 인덱스의 이전까지 정적인 값 하나로 채운다.
배열이 start값으로 start-end-1의 길이만큼 채워진다.
map():배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환
map으로 각각의 값들을 돌면서 인덱스만큼 -1을 해준다.
조금만 생각하면 map을 이용한 방법도 이용할수있었을것같아서 아쉽다.
다음번에는 이 방법으로도 풀어봐야겠다.
+1이나 -1처럼 1씩 일정하게 변동되는 것들은 배열의 인덱스값들을 잘 활용하여 풀수있을것같아서 기억해둬야겠다!
반응형
'JavaScript > 알고리즘' 카테고리의 다른 글
프로그래머스 원소들의 곱과 합 JS ( reduce(), if문 ) (0) | 2023.05.31 |
---|---|
프로그래머스 수 조작하기1 JS ( for문, if문 / reduce() ) (1) | 2023.05.31 |
프로그래머스 문자열의 앞의 n글자 JS ( slice() ) (0) | 2023.05.30 |
프로그래머스 숫자 문자열과 영단어 JS ( replace() ) - [2021 카카오 채용연계형 인턴십] (0) | 2023.05.29 |
프로그래머스 문자열 정수의 합 JS ( map(), reduce() ) (0) | 2023.05.29 |