FrontEngineer JungBam
성능(시간) 고려 본문
스터디 팀원분으로 인해 처음으로 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
}
반응형
'코딩 테스트' 카테고리의 다른 글
하나의 배열 안에서 중복 안되게 조건 달성시키기 (0) | 2022.11.12 |
---|
Comments