문제
https://school.programmers.co.kr/learn/courses/30/lessons/120842?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
🐍파이썬
def solution(num_list, n):
answer = [[] for _ in range(len(num_list)//n)]
for i in range(len(num_list)):
answer[i//n].append(num_list[i])
return answer
1️⃣ 리스트 컴프리헨션으로 이차원 배열을 미리 생성해준다.
2️⃣ answer 내부 배열의 인덱스가 i // n인 동안에는 해당 인덱스에 배열을 추가한다.
Ex.
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]] |
첫 번째 예제의 경우 answer[0]에는 num_list[0], num_list[1], answer[1]에는 num_list[2], num_list[3], answer[2]에는 num_list[4], num_list[5] ... 이 들어간다.
두 번째 예제의 경우 answer[0]에는 num_list[0], num_list[1], num_list[2], answer[1]에는 num_list[3], num_list[4], num_list[5] ... 이 들어간다.
다른 풀이 방법
def solution(num_list, n):
answer = []
for i in range(0, len(num_list), n):
answer.append(num_list[i:i+n])
return answer
🐥자바스크립트
function solution(num_list, n) {
var answer = [];
for (let i = 0; i < parseInt(num_list.length/n); i++){
answer.push([]);
}
for (let i = 0; i < num_list.length; i++){
answer[parseInt(i/n)].push(num_list[i]);
}
return answer;
}
1️⃣ for문으로 빈 배열을 생성한다.
2️⃣ answer 내부 배열의 인덱스가 i / n인 동안에는 해당 인덱스에 배열을 추가한다.
Ex.
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]] |
첫 번째 예제의 경우 answer[0]에는 num_list[0], num_list[1], answer[1]에는 num_list[2], num_list[3], answer[2]에는 num_list[4], num_list[5] ... 이 들어간다.
두 번째 예제의 경우 answer[0]에는 num_list[0], num_list[1], num_list[2], answer[1]에는 num_list[3], num_list[4], num_list[5] ... 이 들어간다.
다른 풀이 방법
function solution(num_list, n) {
var answer = [];
while(num_list.length) {
answer.push(num_list.splice(0,n));
}
return answer;
}
num_list 내부에 원소가 남아있는 동안, num_list 배열의 원소를 0번째 인덱스부터 n개를 splice 하여 answer에 push
❓ splice(start[, deleteCount[, item1[, item2[, ...]]]])
- 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경하는 메서드
- start: 배열의 변경을 시작할 인덱스
- deleteCount: 배열에서 제거할 요소의 수
- item1, item2, <em>...</em>: 배열에 추가할 요소. 아무 요소도 지정하지 않으면splice()는 요소의 제거만 수행
- 반환값: 제거한 요소를 담은 배열. 아무 값도 제거하지 않았으면 빈 배열을 반환
function solution(num_list, n) {
// console.log(Array(num_list.length / n).fill([]));
// 출력: [ [], [], [], [] ]
return Array(num_list.length / n).fill([]).map(() => num_list.splice(0, n))
// 결과값: [[1, 2], [3, 4], [5, 6], [7, 8]]
}
'Problem Solving > 프로그래머스' 카테고리의 다른 글
[프로그래머스 | 파이썬 / 자바스크립트] 문자열 정렬하기 (2)(코딩테스트 입문/ level 0) (0) | 2023.02.20 |
---|---|
[프로그래머스 | 파이썬 / 자바스크립트] 숫자 찾기(코딩테스트 입문/ level 0) (0) | 2023.02.20 |
[프로그래머스 | 파이썬 / 자바스크립트] 머쓱이보다 키 큰 사람(코딩테스트 입문/ level 0) (0) | 2023.02.20 |
[프로그래머스 | 파이썬 / 자바스크립트] 피자 나눠 먹기 (1)(코딩테스트 입문/ level 0) (0) | 2023.02.20 |
[프로그래머스 | 파이썬 / 자바스크립트] 직사각형 넓이 구하기(코딩테스트 입문/ level 0) (0) | 2023.02.20 |
[프로그래머스 | 파이썬 / 자바스크립트] 종이 자르기(코딩테스트 입문/ level 0) (0) | 2023.02.20 |