아보카도 Blog
프로그래머스 스쿨 코딩테스트 입문: 2차원으로 만들기 본문
문제 출처
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제를 보려면 더보기를 클릭
문제 설명
정수 배열 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_listnresult
[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_listnresult
[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]] |
배열 안에 배열을 만들어야 하는데,
처음부터 그렇게 시작하기 보다는,
리턴 값을 평범한 배열로 두고, 그 안에 반복문을 사용해서 배열을 쌓아가는 것으로 접근하자.
일단 8 // 2 = 4처럼 len(num_list)를 n값으로 나누어 보아야 한다.
그리고 그 만큼의 범위만큼 반복하기. for i in range(len(num_list)//n):
주의해야 할 점은 [a:b] 범위에서 b는 포함되지 않는다는 것이다. 즉 a이상 b미만이다.
그리고 얻은 값을 answer에 append해주기.
def solution(num_list, n):
answer = []
for i in range(len(num_list)//n):
answer.append(num_list[i*n : (i+1)*n])
return answer
두번째 방법은 배열 안의 배열을 temp로 저장해준 후,
이곳에서 반복문을 실행하여 append 후, answer에 또 append 해주기.
이때 cnt라는 변수를 설정하여 cnt++를 해주면서 cnt가 n과 같아질 때까지 반복해주는 것이 중요하다.
반복이 끝나면 cnt와 temp를 초기화해주는 것도 잊지 말 것!
def solution(num_list, n):
answer = []
cnt = 0
temp = []
for i in num_list:
temp.append(i)
cnt += 1
if cnt == n:
answer.append(temp)
# 초기화
temp = []
cnt = 0
return answer
'자료구조, 알고리즘' 카테고리의 다른 글
프로그래머스 스쿨 코딩테스트 입문: 평행 (0) | 2022.12.22 |
---|---|
프로그래머스 스쿨 코딩테스트 입문: 직각삼각형 출력하기 (0) | 2022.12.22 |
자료구조, 알고리즘 5주차 (0) | 2022.12.12 |
자료구조, 알고리즘 4주차: 완전이진트리, 힙, DFS&BFS, Dynamic Programming (1) | 2022.11.29 |
자료구조, 알고리즘 3주차: 정렬, 스택, 큐, 해쉬, 아주 어려운 연습문제들... (1) | 2022.11.25 |