코딩테스트/프로그래머스 기초 트레이닝

[Javascript] 특이한 이차원 배열 1

dev_swH 2023. 6. 13. 11:51

솔직히 혼자 푸는 덴 실패했고 검색해서 방법을 얻어서 겨우 풀었다ㅠㅠ

 

function solution(n) {
    let arr = new Array(n).fill(new Array(n).fill(0));
    return arr.map((el, i) => {
        return el.map((v, vi) => i === vi ? 1 : v);
    })
}

 

아래는 다른 사람들의 풀이.

중첩 반복을 안 쓰는 방법은 생각해보지 못해서 굉장히 신선했다.

function solution(n) {
  const answer = Array.from(Array(n), () => Array(n).fill(0));

  for (let i = 0; i < n; i++) {
    answer[i][i] = 1;
  }

  return answer;
}

 

function solution(n) {
    const answer = [];

    for(let i=0; i<n; i++) {
        const row = new Array(n).fill(0);
        {
            row[i] = 1;
        }

        answer.push(row);
    }

    return answer;
}

 

제일 처음에 나는 시도했다가 실패한 방법인데

다른 사람의 풀이를 보니 처음부터 이차원 배열을 만들어놓고 위치를 찾게 한 것이 오류의 원인이었던 모양이다.

자꾸 undefined에서 push를 쓸 수 없다는 오류가 나오더라고...😂

function solution(n) {
    let result = [];

    for(let i = 0; i < n; i++) {
        let arr = [];
        for(let j = 0; j < n; j++) {
            if(i === j) {
                arr.push(1);
            } else {
                arr.push(0);
            }
        }
        result.push(arr);
    }

    return result;
}