[프로그래머스] 정사각형으로 만들기

0
post-thumbnail
post-custom-banner

❔ [문제]

이차원 정수 배열 arr이 매개변수로 주어집니다. arr의 행의 수가 더 많다면 열의 수가 행의 수와 같아지도록 각 행의 끝에 0을 추가하고, 열의 수가 더 많다면 행의 수가 열의 수와 같아지도록 각 열의 끝에 0을 추가한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.

  • 제한사항
    • 1 ≤ arr의 길이 ≤ 100
    • 1 ≤ arr의 원소의 길이 ≤ 100
      • arr의 모든 원소의 길이는 같습니다.
    • 1 ≤ arr의 원소의 원소 ≤ 1,000


❕ [내 풀이]

function solution(arr) {
    var answer = [[]];
    const 행길이 = arr.length;
    const 열길이 = arr[0].length;
    if(행길이 === 열길이) return arr;
    else {
        if(행길이 > 열길이) {
        arr = arr.map((v) => {
            while(v.length < arr.length) {
              v.push(0)   
            }
            return v;
        })
        }
        else for(let i = 행길이; i < 열길이; i++) {
          arr = arr.concat([new Array(열길이).fill(0)]);
        }  
        answer = arr;
    } 
    
    return answer;
}

❕❕❕ [깔끔하다고 생각된 풀이]

function solution(arr) {
    const N = Math.max(arr.length, arr[0].length)
    for (let i=0; i<arr.length; i++){
        while (arr[i].length < N){
            arr[i].push(0)
        }
    }
    while (arr.length < N){
        arr.push(Array(N).fill(0))
    }
    return arr
}

행과 열 둘 중 큰 값만 구해 배열에 push

post-custom-banner

0개의 댓글