eatthefrog

코딩테스트자바스크립트 코딩 테스트: 배열 기초 문제(3) 본문

코딩테스트

코딩테스트자바스크립트 코딩 테스트: 배열 기초 문제(3)

eater_forg 2025. 5. 8. 16:04

 

[@]특별한 이차원 배열2

[문제] n × n 크기의 이차원 배열 arr이 매개변수로 주어질 때, arr이 다음을 만족하면 1을 아니라면 0을 return 하는 solution 함수를 작성해 주세요.
[조건] 0 ≤ i, j < n인 정수 i, j에 대하여 arr[i][j] = arr[j][i]
function solution(arr) {
    let n = arr.length;
    
    for(let i=0; i<n-1; i++){
        for(let j = i+1; i<n-1; i++){
            if(arr[i][j] != arr[j][i])
                return 0;
        }
    } 
    return 1;
} 

//입력: 숫자 타입 2차원 배열: arr
//출력: 숫자 데이터: answer(참,거짓)
//f(x): 2차원 배열 중첩 for문으로 i,j증가 시키며 순회하고, 조건문으로 일치 검사

 

인덱스 j에 대한 중첩 for문(for j from i+1 to n-1)은 불필요한 비교를 제거하기 위한 코드다.

왜냐하면 i == j일때는 arr[i][j] == arr[j][i]가 당연히 참이기 때문이다. 
예를 들어, i와 j가 둘다 0일때 arr[0][0] == arr[0][0]이 되므로, 언제나 참이 된다.

 


[@]특별한 이차원 배열1

 

오답 기록

[문제]
정수 n이 매개변수로 주어질 때, 다음과 같은 n × n 크기의 이차원 배열 arr를 return 하는 solution 함수를 작성해 주세요. arr[i][j] (0 ≤ i, j < n)의 값은 i = j라면 1, 아니라면 0입니다.
 
[내가 작성한 문제정의]
//입력: 숫자 타입 데이터 : n //출력: 숫자 타입 이차원 배열: arr //f(x): arr[i][j] (0 ≤ i, j < n)의 값은 i = j라면 1, 아니라면 0
 
[내가 작성한 의사코드]
1. n을 입력받으면 nxn크기의 2차원 배열 생성 2. for문을 돌리면서 조건을 만족한경우 push 1, 아닐경우 push 0
 
[내가 작성한 코드]
function solution(n) { const arr = Array.from(Array(n), () => new Array(n)); for(let i=0; i<n-1; i++){ for(let j = i+1; i<n-1; i++){ if(arr[i][j] == arr[j][i]) arr.push(1); else arr.push(0); } } return arr; }
 
[내가 생각한 오답 고민]
push메서드는 배열 끝에 값을 삽입하므로, 예상치 못한 결과가 나와서 틀린건가?
 
 

 

🎯 발전 방향 제안
  1. for문 안에서 어떤 값을 어디에 넣는지 더 명확히 인식해보기
    → push는 어디에 하는지? 어떤 배열에? 2차원이면 안쪽 배열 먼저 만들어야 함!
  2. 이차원 배열 초기화 연습하기
    → Array.from, fill, 중첩 for문 등 다양한 방법 익히기
  3. 문제를 풀기 전에 예시로 직접 손으로 써보기
    → n = 3일 때 배열을 직접 그려보면 감이 확 와!