한 걸음씩
[프로그래머스][JS] 정사각형으로 만들기 본문
https://school.programmers.co.kr/learn/courses/30/lessons/181830
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 과정
function solution(arr) {
const row = arr.length
const column = arr[0].length
if (row === column){
return arr
}else if (row > column){
for (let i = 0; i < arr.length; i++){
while (arr[i].length !== row){
arr[i].push(0)
}
}
}else if (row < column){
for (let j = 0; j < column - row; j++){
arr.push(Array(column).fill(0))
}
}
return arr
}
입출력 예로 나와있는 케이스는 전부 통과했는데 채점을 하면 통과를 못해서 살펴보니까
arr = [[1, 1], [1, 1], [1, 1], [1, 1]]라는 배열이 주어졌을 때,
열과 행의 길이가 일치하도록 맞춰주면 다음과 같이 나와야한다. → [[1, 1, 0, 0],[1, 1, 0, 0],[1, 1, 0, 0], [1, 1, 0, 0]]
그런데 코드를 살펴봤을 때, 두 번째 조건문에서 row > column인 경우,
else if (row > column){
for (let i = 0; i < arr.length; i++){
arr[i].push(0)
// 이렇게 하면 통과하는 배열이 정해져있다 -> while문을 사용해서 row만큼 0을 추가해줘야한다
}
}
처음 시도 때 위와 같이 코드를 작성했는데 입출력 예시 배열에 맞춰서 코드를 짰기 때문에, 0을 두 개 이상 추가해야 하는 경우에는 오류가 발생해 버리는 것이다.
때문에, 0을 row와 같아질때까지 추가하려면 while문을 사용해야 한다. 언제까지 반복을 해야 할지 모르니까!
function solution(arr) {
let array = arr.slice()
const row = arr.length
const col = arr[0].length
// console.log(row, col)
if(row > col){
for (let i = 0; i < row; i++){
for (let j = 0; j < (row - col); j++){
array[i].push(0)
}
}
// console.log(array)
return array
}else if (row < col){
const emptyArr = Array.from({length: (col)}, () => 0)
// console.log(emptyArr)
for (let i = 0; i < (col - row); i++){
array.push(emptyArr)
}
return array
}else {
return array
}
// console.log(array)
}
// row > col일 때, 추가 테스트 케이스
// console.log(solution([[1, 1], [1, 1], [1, 1], [1, 1]]))
// [[1, 1, 0, 0], [1, 1, 0, 0], [1, 1, 0, 0], [1, 1, 0, 0]]
리뷰
입출력 예시로 나와있는 배열은 다 통과를 했는데 테스트는 실패가 떠서 왜인지 한참 생각했는데
내가 코드를 짤 때, 주어진 예시에 맞춰서 짰기 때문에 완전 다른 유형의 배열이 들어오면 통과를 못했던거였다
이 부분만 제외하면 전체적으로 어려운 문제는 아닌 것 같다.
'Programmers' 카테고리의 다른 글
[프로그래머스][JS] 문자열 계산하기 (0) | 2023.06.14 |
---|---|
[프로그래머스][JS] 배열 만들기 6 (0) | 2023.06.13 |
[프로그래머스][JS] 문자열 여러 번 뒤집기 (0) | 2023.06.12 |
[프로그래머스][JS] 두 수의 합 (0) | 2023.06.12 |
[프로그래머스][JS] 배열 만들기 4 (0) | 2023.06.12 |