FrontEngineer JungBam

성능(시간) 고려 본문

코딩 테스트

성능(시간) 고려

정밤톨 2022. 11. 12. 17:28
스터디 팀원분으로 인해 처음으로 2단계 문제, 혼자놀기의 달인 문제를 풀면서 깨닫게 되었다.
그냥 단순히 구현하는 것뿐 아니라 알고리즘은 성능도 고려해야 한다는 것.
아래 내 코딩을 보면 단순히 문제를 직관적으로 코딩하다보니 for문이 3개나 중첩되어 있고 이로 인해서 정답을 제출했을때 두번 돌렸을 때 시간 안에 들어오는 경우의 수가 1개 뿐이었다..(이럴수가..)
1. 중첩 반복문은 지양(최소화)
2. 변수를 매번 for문에서 선언함으로써 선언된 변수가 cards의 배열 길이가 100일 떄 100만개가 선언되는 문제

진짜 간단히 말해서 성능이 꽝이라는 이야기..ㅠㅠ
가장 기본적으로 깨달은 부분부터 개선하면서 알고리즘 공부를 해야겠다ㅠㅠ

function solution(cards) {
  let answer = 0
  let answerAA = []

  for (let i = 0; i < cards.length; i++) {
    const a = i
    for (let j = 0; j < cards.length - i; j++) {
      const b = j
      for (let z = 0; z < cards.length - i - j; z++) {
        const c = z
        const answerArray = [a, b, c]
        answerArray.sort((a, b) => {
          return b - a
        })
        answer = answerArray[0] * answerArray[1]
        answerAA.push(answer)
      }
    }
  }

  answerAA.sort(function (a, b) {
    return b - a
  })
  answer = answerAA[0]
  return answer
}
반응형
Comments