n × n 크기의 이차원 배열 arr이 매개변수로 주어질 때, arr이 다음을 만족하면 1을 아니라면 0을 return 하는 solution 함수를 작성해 주세요.
- 0 ≤ i, j < n인 정수 i, j에 대하여 arr[i][j] = arr[j][i]
제한사항
function solution(arr) {
for (let i=0; i<arr.length; i++) {
for (let j=0; j<arr[0].length; j++) {
if (arr[i][j] == arr[j][i]) continue;
else return 0;
}
}
return 1
}
도저히 다른 방식 모르겠어서 이중for문 조짐
function solution(arr) {
return arr.every((r, i) => r.every((_, j) => arr[i][j] === arr[j][i])) ? 1 : 0;
}
이게.. 한 줄에 된다고... 이 풀이에서는 every()
를 중첩하여 사용했다.
every()
메서드는 각 행(row)를 순회한다. 각 행인 r과 해당 행의 인덱스(i)가 콜백함수의 인자로 전달된다. every()
메서드는 현재 행 r의 각 열(column)을 순회한다. 각 열의 값과 대칭되는 위치의 값을 비교한다. 고차함수...와우... 이렇게 쓰는 방식을 계속 공부하고 연습해봐야겠따 ㅠㅠ 하 이번주 문제 토나오는 줄 알았내 🤢
function solution(arr) {
const SIZE = arr.length;
for(let i=0; i<SIZE; i++) {
for(let j=i+1; j<SIZE; j++) {
if(arr[i][j] !== arr[j][i]) return 0;
}
}
return 1;
}