반응형
Notice
Recent Posts
Archives
Today
Total
Link
관리 메뉴

꾸준하게

[JS코딩테스트] 뒤에 있는 큰 수 찾기 (아직 실패 중) 본문

JS코딩테스트

[JS코딩테스트] 뒤에 있는 큰 수 찾기 (아직 실패 중)

DaeunCoding 2023. 3. 26. 00:16
728x90
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/154539

 

첫 Lv2 도전!!

역시 어렵긴 하지만, 계속 풀다 보면 실력이 늘겠지!

[처음 생각한 풀이] - 틀림

function solution(numbers) {
    let answer = [];
    for(i = 0; i < numbers.length; i++){
        for(k = i + 1; k < numbers.length; k++){
            if(numbers[k]>numbers[i]){
                answer.push(numbers[k]);
                break;
            }
        }
    }
    return answer;
}

처음 생각해낸 풀이이다.

 

틀린 점은, 뒷 큰수가 없을 때, -1을 반환하지 않고 지나간다는 것.

 

그래서 다른 풀이를 고민해보았다.

function solution(numbers) {
    let afterBigArray = [];
    let answer = [];
    for(i = 0; i < numbers.length; i++){
        for(k = i + 1; k < numbers.length; k++){
            if(numbers[k]>numbers[i]){
                afterBigArray.push(numbers[k]);
            }
        }
        if(afterBigArray.length >= 1){
            answer.push(afterBigArray[0]);
        } else {
            answer.push(-1);
        }
        afterBigArray = [];
    }
    return answer;
}

코드가 조금 길어지긴 했지만, 한 번 설명해보겠다.

 

일단, 내가 생각한 로직은

1) numbers의 요소 i의 다음 요소들 중 큰 요소만 빈 배열(afterBigArray)에 추가한다.

2) 배열 afterBigArray 중 첫 번째 요소만 골라서 최종배열(answer)에 추가한다.

 

이렇게 생각했다.

 

우선, for문으로 배열의 요소들이 순서대로 반복실행하도록 설정하고,

i의 다음 순서부터 끝까지 훑으며 i보다 큰 수만 빈 배열(afterBigArray)에 넣어준다.

 

afterBigArray의 요소가 한 개 이상일 때에는 그 요소 중 첫 번째 요소를 최종배열(answer)에 추가한다.

afterBigArray이 빈 배열일 경우 -1을 answer에 추가한다.

 

afterBigArray를 다시 빈 배열로 만든 후 위 작업을 반복하게 한다.

 


위 방법대로 풀었을 때 테스트는 통과했지만, 제출 후 채점에서 시간 초과로 실패했다.

 

정확성 30.

 

너무 비효율적인 코드인 것 같다.

 

내일 일어나서 다시 생각해봐야지.

728x90
반응형