개발/알고리즘(코딩테스트)

프로그래머스, 자바스크립트) 정사각형으로 만들기

빔네모 2024. 3. 4. 09:56

문제

https://school.programmers.co.kr/learn/courses/30/lessons/181830

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

arr의 모든 원소의 길이는 같다는 조건이 있으므로 행과 열이 같은 경우에는 바로 리턴해서 빠져나온다.

그리고 같지 않은 경우에는 그만큼 0을 채워주고, 아예 원소가 없는 경우에는 0으로 다 채워서 넣어준다.

function solution(arr) {
  //행, 열이 같은 경우
  if (arr.length === arr[0].length) {
    return arr;
  }

  //같지 않은 경우
  const max = Math.max(arr.length, arr[0].length);
  for (let i = 0; i < max; i++) {
    if (arr[i] === undefined) {
      arr[i] = new Array(max).fill(0);
    } else if (arr[i].length < max) {
      arr[i] = [...arr[i], ...new Array(max - arr[i].length).fill(0)];
    }
  }

  return arr;
}

 

다른 풀이

반복문으로 max까지 돌면서 원소의 길이가 더 작다면 while문을 이용해 arr에 0을 추가한다.

function solution(arr) {
  const max = Math.max(arr.length, arr[0].length);

  for (let i = 0; i < max; i++) {
    arr[i] = arr[i] || [];
    while (arr[i].length < max) {
      arr[i].push(0);
    }
  }

  return arr;
}