230207 프로그래머스 뒤에 있는 큰 수 찾기(해결중)

샨티(shanti)·2023년 2월 6일
0

코딩테스트

목록 보기
31/35
post-custom-banner

매일 매일 하루 한 문제씩.
꾸준히 이어가는 코딩테스트 풀이 기록 ✅

오늘 문제는 알 듯 말 듯. 헷갈리면서도 뭔지 잘 모르겠는 문제이기도 했다.
자바스크립트로 문제를 풀면서 우선 효율성이나 시간초과를 고려하지 않은 코드를 하나 만들었다.
역시 예상한대로 마지막 4개 테스트가 시간초과로 인해 통과되지 못했다.

내가 구상한 논리로는 시간초과 문제를 해결할 기미가 보이지 않아서 정해진 시간을 투입해 생각한 후에 다른 풀이들을 참고했다.

신기하게도 거꾸로 생각해야 풀 수 있는 문제였는데 아직 이를 어떻게 자바와 JS로 구현할 수 있는지 떠올리지 못했다.
어쨌든 계속 index와 valu를 키값으로 주고 풀려고 했던 생각으로는 해결할 수 없었던 것 같다.

기록 용으로 자바스크립트 시간초과 코드를 남겨둔 뒤에 주말동안 이번주에 풀지 못했던 코딩테스트 문제를 마무리 지으려 한다.


문제 링크

뒤에 있는 큰 수 찾기


JavaScript

지난 면접에서 효율성에 대한 이야기를 듣고난 뒤 아무래도 주어지는 배열이나 자료의 범위를 한번 더 확인하게 되더라.
오늘도 최악의 경우를 떠올렸을 때 정말 수십, 수백만회를 탐색하는 경우가 발생하겠다고 추측했는데 아마 시간초과 부분이 그래서 뜬 것 같다.
모든 경우의 수를 탐색하지 당연한 결과...

언넝 다시 방법을 찾고 수정해보고 싶다.

// 시간 초과 코드(마지막 4개 테스트 통과 못함)

function solution(numbers) {
  const answer = [];

  for (let i = 0; i < numbers.length; i += 1) {
    const standard = numbers[i];
    let isBiggerNumberExist = false;
    let j = i + 1;

    while (j < numbers.length) {
      if (standard < numbers[j]) {
        answer.push(numbers[j]);
        isBiggerNumberExist = true;
        break;
      }

      j += 1;
    }

    if (isBiggerNumberExist === false) {
      answer.push(-1);
    }
  }

  return answer;
}

그나저나 변수명 짓기가 쉽지 않고만...
오늘은 풀었으면 좋았을텐데. 아쉽다.
다시 마음 한번 털어버리고 또 해볼 것 하러 가자.

profile
가벼운 사진, 그렇지 못한 글
post-custom-banner

0개의 댓글