

TECH.KAKAO.GG
프로그래머스 정사각형으로 만들기
Algorithm
👁️ 61일 전
문제 설명
주어진 2차원 배열 arr
은 행과 열의 길이가 다를 수 있습니다.
이 배열을 정사각형 형태(N × N) 로 만들기 위해,
-
행(row) 수와 열(column) 수 중 더 큰 값을
N
이라 정의하고, -
부족한 행은
[0, 0, ...]
배열을 추가, -
부족한 열은 해당 행 끝에
0
을 추가합니다.
최종적으로, arr
은 N × N
크기의 2차원 배열이 됩니다.
function solution(arr) {
let rowCount = arr.length;
let colCount = Math.max(...arr.map(row => row.length));
let size = Math.max(rowCount, colCount); // 목표 크기
// 행이 부족하면 0으로 채운 새 행 추가
while (arr.length < size) {
arr.push(Array(size).fill(0));
}
// 각 행의 길이를 맞추기 위해 열을 0으로 채움
for (let i = 0; i < size; i++) {
while (arr[i].length < size) {
arr[i].push(0);
}
}
return arr;
}
알고리즘 접근 순서
-
arr.length
로 현재 행의 수(row count) 를 구한다. -
각 행의 길이 중 최댓값(column count) 을 구한다.
-
N = max(row count, column count)
로 확정한다. -
배열을 순회하며 다음을 수행한다:
-
행이 부족하면
[0, 0, ..., 0]
행 추가. -
각 행의 열이 부족하면
0
을 끝에 추가.
-
핵심 포인트
-
Math.max(...arr.map(row => row.length))
형태를 통해 열의 최대 길이를 계산 -
Array(n).fill(0)
은 배열을 0으로 초기화할 때 가장 깔끔한 방법 -
정사각형 크기(
size
) 기준으로만 판단하면 모든 조건을 쉽게 처리할 수 있음
키워드
프로그래머스 정사각형으로 만들기정사각형으로 만들기정사각형 배열 변환배열 패딩 처리행열 길이 비교