꾸준하게
[JS코딩테스트] 뒤에 있는 큰 수 찾기 (아직 실패 중) 본문
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
반응형
'JS코딩테스트' 카테고리의 다른 글
[JS코딩테스트] 제일 작은 수 제거하기 (0) | 2023.03.31 |
---|---|
[JS코딩테스트] 없는 숫자 더하기 (0) | 2023.03.29 |
[JS코딩테스트] 자릿수 더하기 (0) | 2023.03.23 |
[JS코딩테스트] 짝수와 홀수 (0) | 2023.03.21 |
[JS코딩테스트] 약수의 합 (0) | 2023.03.20 |