inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

섹션 2, 1,2차원 탐색(봉우리)

해결된 질문

165

ReKoding

작성한 질문수 15

1

선생님 안녕하세요 문제를 푸는 과정에서 궁금한 점이 생겨서 질문 드립니다.

먼저 저는 문제에서 힌트를 얻어 기존의 배열의 테두리에 0을 추가해주고 풀었습니다.

근데 arr.push / arr.unshift를 통하여 배열 상하단에 [0,0,0,0,0]으로 된 배열을 추가하고 난 뒤

배열 안의 arr[i]의 배열에도 push, shift를 통해 0을 추가해줬습니다.

 

이 과정에서 동일하게 for문을 진행했는데

추가해준 첫번째, 마지막 배열의 길만 9개가 되는데 왜 그런지 이유를 잘 모르겠습니다.

다른 배열들은 push, unshift가 한번씩만 된 거 같은데, 추가해준 배열만 2번씩 된 거 같습니다. 이유가 무엇인지 알 수 있을까요??

 

제가 잘못한 부분이 있는걸까요??

<html>
    <head>
        <meta charset="UTF-8">
        <title>출력결과</title>
    </head>
    <body>
        <script>
            function solution(arr){         
                let answer = 0;
                let newArr = new Array(arr.length).fill(0);
                arr.push(newArr);
                arr.unshift(newArr);

                for(let i=0;i<arr.length;i++){
                    arr[i].push(0);
                    arr[i].unshift(0);
                }

                for(let i=0;i<arr.length;i++){
                    for(let j=0;j<arr[i].length;j++){
                        let res = arr[i][j];
                        if(i !== 0 && i !== arr.length - 1 && j !== 0 && j !== arr[i].length - 1){
                            if(res > arr[i+1][j] && res > arr[i-1][j] && res > arr[i][j+1] && res > arr[i][j-1]){
                                answer += 1;
                            }
                        }
                    }
                }
                console.log(arr)
                return answer;
            }

            let arr = [
                [5,3,7,2,3],
                [3,7,1,6,1],
                [7,2,5,3,4],
                [4,3,6,4,1],
                [8,7,3,5,2]
            ]
            console.log(solution(arr))
        </script>
    </body>
</html>

javascript 코딩-테스트

답변 1

1

김태원

안녕하세요^^

첫 번째 배열과 마지막 배열은 동일 배열입니다. arr[0][0] = 1로 값을 바꾸면 arr[6][0]도 1로 변해 있을 겁니다.

아래와 같이 하나는 깊은 복사를 해서 unshift를 하면 해결될 겁니다.

arr.push(newArr);
arr.unshift(newArr.slice());

 

0

ReKoding

이해 했습니다 선생님 !

제가 new Array로 만든 배열도 레퍼런스 타입이라는걸 생각 못한거 같습니다 ㅜ

감사합니다 !

continue를 사용하는 이유

0

82

2

정렬 가능 여부 판단하기

0

66

2

알고리즘 학습법 관련해서 질문드립니다.

0

86

1

코드 리뷰 부탁드립니다!

0

90

1

indexOf를 사용해서 풀어보았습니다 !!

0

69

1

저는 이런식으로 구현 해보았습니다 !!

0

64

1

12,13,14 강의 소리만 나오고 검은 화면입니다

0

101

3

반복문 최소화하고 indexOf 사용해서 풀어봤습니다

0

63

1

영상 보기 전에 직접 풀어봤습니다.

0

75

1

섹션1의 17번문제 이 풀이로 풀어도 될까요?

0

136

2

정규표현식으로 처리해도 상관없나요 ?

0

120

2

3칸씩 건너뛸 수 있을 경우

0

126

2

강의에 대해 질문있습니다.

0

136

2

Object와 Set을 이용해 풀어봤습니다.

0

117

2

이렇게 해도 되나요?

0

102

2

선생님 중복 단어나 중복관련 문제들은 set을 이용하면 좋을것 같습니다.

0

145

2

이렇게 풀어도 괜찮을까요?

0

138

1

이렇게 풀어도 괜찮을까요?

0

113

1

모든 아나그램 찾기에서 시간복잡도

0

98

1

코드리뷰 부탁드립니다.

0

130

1

for loop 탈출은 return 문으로 해도 되지 않나요?

0

133

1

투포인트알고리즘으로 풀어봤습니다.

0

142

0

코드 리뷰 부탁드립니다.

0

120

1

코드 맞게 작성한 거 아닌가여??

0

146

1