일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- udemy
- javascript
- Flex Container
- React
- html
- 바이트디그리
- flex item
- react강의
- 자바스크립트
- API
- DOM
- js
- margin-left
- 노드
- CSS
- 호이스팅
- 내일배움카드
- 패스트캠퍼스
- 변수 선언
- 코딩테스트 js
- flex
- K디지털기초역량훈련
- 코딩테스트 lv0
- 나라사랑카드
- SVG
- 리액트
- js split
- 프로그래머스 lv0
- 프로그래머스 JS
- 국비지원
- Today
- Total
꺾이지 않는 마음
[프로그래머스] Lv.0 2차원으로 만들기 JS 풀이 본문
🧡문제 설명
정수 배열 num_list와 정수 n이 매개변수로 주어집니다. num_list를 다음 설명과 같이 2차원 배열로 바꿔 return하도록 solution 함수를 완성해주세요.
num_list가 [1, 2, 3, 4, 5, 6, 7, 8] 로 길이가 8이고 n이 2이므로 num_list를 2 * 4 배열로 다음과 같이 변경합니다. 2차원으로 바꿀 때에는 num_list의 원소들을 앞에서부터 n개씩 나눠 2차원 배열로 변경합니다.
num_list | n | result |
[1, 2, 3, 4, 5, 6, 7, 8] | 2 | [[1, 2], [3, 4], [5, 6], [7, 8]] |
💛제한사항
- num_list의 길이는 n의 배 수개입니다.
- 0 ≤ num_list의 길이 ≤ 150
- 2 ≤ n < num_list의 길이
💚입출력 예
num_list | n | result |
[1, 2, 3, 4, 5, 6, 7, 8] | 2 | [[1, 2], [3, 4], [5, 6], [7, 8]] |
[100, 95, 2, 4, 5, 6, 18, 33, 948] | 3 | [[100, 95, 2], [4, 5, 6], [18, 33, 948]] |
💙입출력 예 설명
입출력 예 #1
- num_list가 [1, 2, 3, 4, 5, 6, 7, 8] 로 길이가 8이고 n이 2이므로 2 * 4 배열로 변경한 [[1, 2], [3, 4], [5, 6], [7, 8]] 을 return합니다.
입출력 예 #2
- num_list가 [100, 95, 2, 4, 5, 6, 18, 33, 948] 로 길이가 9이고 n이 3이므로 3 * 3 배열로 변경한 [[100, 95, 2], [4, 5, 6], [18, 33, 948]] 을 return합니다.
✨나의 풀이
💜 for 반복문 속에 slice(i, i+n) 메서드 활용
function solution(num_list, n) { let answer = []; for (let i = 0; i<=num_list.length-1; i+=n) { answer.push(num_list.slice(i, i+n)); } return answer; }
반복문을 안에서 배열을 n의 갯수만큼 앞에서부터 잘라주었다.
그리고 push 메서드를 통해 answer 배열 하나씩 추가해주었다.
slice 메서드는 원본 배열을 변경하지 않기 때문에 slice의 파라미터를 계속해서 늘려주었다(i, i+n).
정답을 제출하고나서 보니까 이럴거면 그냥 반복문 속에 splice(0, n) 메서드를 쓰면 되지 않나? 란 생각이 들었다.
😮다른 풀이
function solution(num_list, n) { var answer = []; while(num_list.length) { answer.push(num_list.splice(0,n)); } return answer; }
역시나 splice() 메서드를 활용해서 앞에서부터 계속해서 원본을 삭제하는 풀이법이 있었다.
내가 쓴 slice() 메서드 활용법이랑 비슷한 풀이인데, 훨씬 코드가 간결하다.
for 반복분처럼 조건식을 막 쓸 필요가 없기 때문에..
이 풀이에서 눈 여겨 볼 점은 while의 조건문을 num_list.length로 했다는 점!
splice 메서드는 원본 배열을 변경하기 때문에, 계속해서 자르다 보면 배열의 원소가 전부 없어진다.
위 조건식에서 배열의 길이가 0이 되면 조건식이 false가 될테니 반복문이 자연스레 종료된다.
반복문의 조건식에 배열의 길이를 넣는 방식 하나 머리에 담고 간다.
오늘도 성장 +1 스택
'코딩테스트 기록' 카테고리의 다른 글
[프로그래머스] Lv.0 k의 개수 JS 풀이 (0) | 2022.10.29 |
---|---|
[프로그래머스] Lv.0 팩토리얼 JS 풀이 (0) | 2022.10.29 |
[프로그래머스] Lv.0 합성수 찾기 JS 풀이 (0) | 2022.10.28 |
[프로그래머스] Lv.0 가위 바위 보 JS 풀이 (1) | 2022.10.27 |
[프로그래머스] Lv.0 대문자와 소문자 JS 풀이 (0) | 2022.10.27 |