특별한 이차원 배열 2
문제 설명
n × n 크기의 이차원 배열 arr이 매개변수로 주어질 때, arr이 다음을 만족하면 1을 아니라면 0을 return 하는 solution 함수를 작성해 주세요.
- 0 ≤ i, j < n인 정수 i, j에 대하여 arr[i][j] = arr[j][i]
입출력 예
arr | result |
[[5, 192, 33], [192, 72, 95], [33, 95, 999]] | 1 |
[[19, 498, 258, 587], [63, 93, 7, 754], [258, 7, 1000, 723], [587, 754, 723, 81]] | 0 |
입출력 예 #1
- 예제 1번에서 문제의 조건이 잘 보이도록 표를 만들면 다음과 같습니다. 조건을 만족하므로 1을 return 합니다.
i | j | arr[i][j] | arr[j][i] |
0 | 0 | 5 | 5 |
0 | 1 | 192 | 192 |
0 | 2 | 33 | 33 |
1 | 0 | 192 | 192 |
1 | 1 | 72 | 72 |
1 | 2 | 95 | 95 |
2 | 0 | 33 | 33 |
2 | 1 | 95 | 95 |
2 | 2 | 999 | 999 |
입출력 예 #2
- 예제 2번의 arr에서 arr[0][1] = 498 ≠ 63 = arr[1][0]이므로 조건을 만족하지 않습니다. 따라서 0을 return 합니다.
나의 풀이
function solution(arr) {
for (const i in arr) {
for (const j in arr[i]) {
if (arr[i][j] !== arr[j][i]) return 0;
}
return 1;
}
}
이중 for문으로 `arr[i][j] !== arr[j][i]`라는 조건에 걸리지 않고 모두 통과했을 경우에만 1을 return 하도록 했다.
다른 사람의 풀이
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.prototype.every()
const isBelowThreshold = (currentValue) => currentValue < 40;
const array1 = [1, 30, 39, 29, 10, 13];
console.log(array1.every(isBelowThreshold));
// Expected output: true
every() 메서드는 배열 안의 모든 요소가 주어진 판별 함수를 통과하는지 테스트합니다. Boolean 값을 반환합니다.
출처 https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/every
'알고리즘 > Programmers' 카테고리의 다른 글
[TIL] 2023.08.11 Programmers_날짜 비교하기 (0) | 2023.08.11 |
---|---|
[TIL] 2023.08.03 Programmers_0 떼기 (0) | 2023.08.03 |
[TIL] 2023.07.27 Programmers_수열과 구간 쿼리 3 (0) | 2023.07.28 |
[TIL] 2023.07.27 Programmers_주사위 게임 2 (0) | 2023.07.27 |
[TIL] 2023.07.15 Programmers_l로 만들기 (0) | 2023.07.15 |
댓글