본문 바로가기
프로그래밍/알고리즘

프로그래머스 - 정사각형으로 만들기 JS

by 숙님 2024. 7. 1.
728x90

문제

 

이차원 정수 배열 arr이 매개변수로 주어집니다. arr의 행의 수가 더 많다면 열의 수가 행의 수와 같아지도록 각 행의 끝에 0을 추가하고, 열의 수가 더 많다면 행의 수가 열의 수와 같아지도록 각 열의 끝에 0을 추가한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.
function solution(arr) {
  var answer = [];
  
  // arr의 행(row)과 열(column) 수 계산
  const rowCount = arr.length;
  const colCount = arr[0].length;
  
  // 행(row)과 열(column)의 길이 차이에 따라 처리
  if (rowCount > colCount) {
    // 행이 더 많을 때: 열을 늘려 0으로 채움
    for (let i = 0; i < rowCount; i += 1) {
      const newArr = [...arr[i]];
      for (let j = colCount; j < rowCount; j += 1) {
        newArr.push(0); // 열을 행의 수만큼 0으로 채움
      }
      answer.push(newArr);
    }
  } else if (rowCount < colCount) {
    // 열이 더 많을 때: 부족한 행을 0으로 채운 배열로 추가
    for (let i = 0; i < colCount; i += 1) {
      if (i < rowCount) {
        answer.push(arr[i]);
      } else {
        const newArr = Array(colCount).fill(0); // 새로운 행을 0으로 채움
        answer.push(newArr);
      }
    }
  } else {
    // 행과 열의 길이가 같을 때: 그대로 추가
    answer = arr;
  }
  
  return answer;
}

댓글