문제)
n × n 크기의 이차원 배열 arr이 매개변수로 주어질 때, arr이 다음을 만족하면 1을 아니라면 0을 return 하는 solution 함수를 작성해 주세요.
- 0 ≤ i, j < n인 정수 i, j에 대하여 arr[i][j] = arr[j][i]
제한사항
- 1 ≤ arr의 길이 = arr의 원소의 길이 ≤ 100
- 1 ≤ arr의 원소의 원소 ≤ 1,000
- 모든 arr의 원소의 길이는 같습니다.
입출력 예
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 |
나의 풀이-오답)
function solution(arr) {
for(let i = 0 ; i < n ; i++){
for(let j=0; j < n ; j++){
if(arr[i][j] === arr[j][i]){
if(i===n-1 && j === n-1){return 1}
else {return 0}
} else {return 0}
}
}
}
내가 의도했을 풀이)
function solution(arr) {
for(let i = 0; i<arr.length; i++){
for(let j = 0; j<arr.length; j++){
console.log([arr[i][j],arr[j][i]])
if(arr[i][j]!=arr[j][i]){
return 0;
}
}
}
return 1;
}
다른 풀이)
1.
function solution(arr) {
return arr.every((r, i) => r.every((_, j) => arr[i][j] === arr[j][i])) ? 1 : 0;
}
2.
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;
}
3.
function range(start, end) {
let value = end === undefined ? 0 : start;
const endValue = end === undefined ? start : end;
while (value < endValue) {
yield value++;
}
}
function solution(arr) {
const n = arr.length;
for (const i of range(n)) {
for (const j of range(i)) {
if (arr[i][j] !== arr[j][i]) {
return 0;
}
}
}
return 1;
}
'Coding Test > 프로그래머스' 카테고리의 다른 글
[ JavaScript / 레벨 0 / 오답 ] 소인수분해 (1) | 2023.11.25 |
---|---|
[ JavaScript / 레벨0 / 오답 ] 이진수 더하기 (0) | 2023.10.25 |
[ JavaScript / 레벨0 / 정답 ] 접두사인지 확인하기 (0) | 2023.10.20 |
[ JavaScript / 레벨0 / 정답 ] 이어 붙인 수 (0) | 2023.10.20 |