인프런 커뮤니티 질문&답변

졍졍님의 프로필 이미지

작성한 질문수

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

1. 큰 수 출력하기

섹션 2. 큰 수 출력하기 문제에서 제가 작성한 답안의 원인을 모르겠습니다

작성

·

223

0

기존 arr의 원소들을 answer로 push하지 않고, 참조 복사 후 조건에 안맞으면 삭제하는 방향으로 진행했습니다.

궁금한 것은 if 문이 시작되기 전에 콘솔에 i와 i+1을 찍어보면 인덱스가

(0,1)(1,2)(2,3),(3,4)씩 차례대로 비교가 되는데

똑같은 방법으로 콘솔에 answer[i], answer[i+1]을 찍어보면 순차적으로 비교하지 않고

(0,1)(2,3)(4,5)씩 비교합니다. 

왜 이런 결과가 나오는지 알 수 있을까요? 

답변 3

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

i가 0일때, 

if 문이 참이되어 answer.splice(i+1, 1);를 하게 되면

1번 인덱스에 있는 3이 지워지면 2번 인덱스에 있던 9가 1번 인덱스 위치로 당겨집니다. 그 효과 때문에 answer값을 출력하면 그렇게 보이는 것입니다.

0

졍졍님의 프로필 이미지
졍졍
질문자

function solution (arr) {
                let answer = arr;
                // push로 추가하는게 아니라 기존 배열 복사 후 조건이 아닐 경우 삭제.
                for (let i = 0; i < answer.length; i++) {
                    if (answer[i] > answer[i+1]) {
                        answer.splice(i+1, 1);
                    }
                }
                
                return answer;
            }

            let arr=[7, 3, 9, 5, 6, 12];
            console.log(solution(arr));

코드 올렸습니다 ! :)

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

전체 코드를 {;} (insert code sample) 버튼을 이용해서 올려주시면 좋겠습니다.

문제가 발생하는 코드를 실행시켜봐야 알 것 같습니다.

졍졍님의 프로필 이미지

작성한 질문수

질문하기