본문 바로가기
기초다지기/JS 코딩테스트

javascript 이차원 정수 배열 행/열 크기 동일하게 만들기

by 김빵그 2023. 10. 25.

문제 

이차원 배열 arr의 행과 열의 개수를 비교하여 행과 열의 수를 일치시켜 정사각형이 될 수 있게 각 위치에 0을 추가한 이차원 배열을 리턴하여라

나의 풀이 

function solution(arr) { 
    var row = arr[0].length; //행
    var col = arr.length; //열
    

    if (col < row) {
        for (let i = 0; i < row - col ; i++) {
            var newRow = new Array(row).fill(0);
            arr.push(newRow);
        }
        
    } else if (col > row) {
        for (let i = 0; i < col; i++) {
            while (arr[i].length < col) {
                arr[i].push(0);
            }
        }
    }
    
    // return arr; 
    console.log(row , col);
}
  • 행과 열의 갯수를 각각 변수에 담아 크기를 비교한다
  • 행의 수가 더 크다면 행의 길이만큼 0을 담은 배열을 추가해야 한다 
  • for 문을 사용하여 행과 열의 차이만큼 루프를 돌려준다
  • newRow : newArray()를 사용하여 새로운 배열을 만들고 row를 배열의 길이로 지정한다
  • fill(0) : array 요소를 0으로 채운다
  • 열의 수가 더 크다면 for문을 돌려 열의 개수만큼 루프시킨다
  • 열의 수가 크면 0을 push.

그 외 풀이

function solution(arr) {
    // n은 행과 열의 수 중 더 큰 값으로 설정됩니다.
    const n = Math.max(arr.length, arr[0].length)

    // 배열 arr의 각 행에 0을 추가하여 열 수를 맞춥니다.
    for (let i=0; i<arr.length; i++){
        while (arr[i].length < n){
            arr[i].push(0)
        }
    }

    // 배열 arr의 행 수를 맞추기 위해 0으로 채워진 행을 추가합니다.
    while (arr.length < n) {
        arr.push(Array(n).fill(0));
    }

    return arr;
}

 


맨위 기초 트레이닝.. 초보용 코테인것을 보고 너무너무 현타가 와버렸다

아니 어느때보다 생각할 게 많은 코드라 .. 아직 멀었구나 싶다