Javascript/자바스크립트 문제
[Javascript : programmers] 특별한 이차원 배열 1,2 (Lv.0)
isfp_yykkng
2024. 8. 6. 00:00
[Javascript : programmers] 특별한 이차원 배열 1,2 (Lv.0)
문제) 특별한 이차원 배열 1
나의 정답 풀이
function solution(n) {
const numbers = Array.from(Array(n), () => new Array(n).fill(0))
for(let i=0; i<n; i++){
numbers[i][i] = 1
}
return numbers
}
2차원 배열을 만들고 0으로 채운다. 그리고 numbers[i][i] 에만 1을 넣고 반환한다.
다른 사람 풀이
function solution(n) {
const arr = Array(n).fill(Array(n).fill(0))
return arr.map((a, i) => {
return a.map((b, bi) => bi === i ? 1 : b)
})
}
map을 2번을 이용하여 x축과 y축 인덱스가 동일할 때 1을 아니면 그대로 두어 반환한다.
문제) 특별한 이차원 배열 2
나의 정답 풀이
function solution(arr) {
for(let i=0; i<arr.length; i++){
for(let j=0; j<arr.length; j++){
if(arr[i][j] != arr[j][i]) return 0
}
}
return 1;
}
배열의 길이만큼 n*n 이중 for문을 돌면서 arr[ i ][ j ] 와 arr[ j ][ i ] 이 다른 경우에는 0을 return 없이 이중 for문을 모두 통과하였을 경우에는 1을 반환한다.
*주의할 점 : arr[ i ][ j ] 와 arr[ j ][ i ] 이 모든 경우에서 같아야 1이라는 것을 주의해야 한다.
다른 사람 풀이
function solution(arr) {
return arr.every((r, i) => r.every((_, j) => arr[i][j] === arr[j][i])) ? 1 : 0;
}
`every()` 메서드는 처음 보는데 배열 안의 모든 요소가 주어진 판별 함수를 모두 통과하는지를 boolean 값으로 출력한다고 한다. 삼항연산자의 조건문에 `every()` 메서드를 이중으로 사용해서 판별 함수를 모두 통과했을 때 1을, 아니라면 0을 반환한다.
학습 내용 ⭐
- 이차원 배열 생성법
- Array.every( 판별 함수 ) 메서드 : 배열 안의 모든 요소가 주어진 판별 함수를 모두 통과하는지를 T/F로 반환한다.
<참고> 이차원 배열 생성법
2024.08.05 - [Javascript/자바스크립트 문제] - [Javascript] 이차원, 다차원 배열 생성법