코딩테스트 공부
[LeetCode] 1051. Height Checker - 자바스크립트 0624
codevil
2022. 6. 24. 10:37
https://leetcode.com/problems/height-checker/
Height Checker - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
문제풀이는 총 3번했다.
1. sort를 두번 써서
2. 1번에서 푼문제를 살짝 수정
3. 2번에서 효율성 개선
1. sort를 두번 썼을 때는 index가 같은 숫자가 많은경우, 오답이 처리되서 좀 더 단순하게 풀기 위해 다시 풀었다.
2번풀이
1. 원래의 본문과 차이가 있으면, count를 해줄 answer을 선언하고, heights를 그대로 sort하면 원형이 바뀔 테니, heights를 복제한 result를 만든다.
let answer = 0
const result = []
for (let i = 0; i < heights.length; i++) {
result.push(heights[i])
}
2. result를 sort한다
result.sort((a, b) => a - b)
3.result와 heights가 다르면 answer ++한다
for (let i = 0; i < heights.length; i++) {
if (heights[i] !== result[i]) {
answer++
}
}
4. answer을 return 한다.
return answer
이렇게 풀이를 했을때는 faster than이 36%, runtime 55ms, Memory가 41.9MB가 나왔었다. 근데 잘보니까, 첫번째 for문 같은경우에 for loop가 아닌 ...을 사용하면 효율성이 계선될꺼같아 수정했다.
const result = [...heights]
결과
이전풀이보다 99에서 55만큼 효율성이 개선되었다. faster than도 98.79%
전체 풀이
var heightChecker = function (heights) {
let answer = 0
const result = [...heights]
result.sort((a, b) => a - b)
for (let i = 0; i < heights.length; i++) {
if (heights[i] !== result[i]) {
answer++
}
}
return answer
};