알고리즘 - IP address
업데이트:
Given a valid (IPv4) IP address, return a defanged version of that IP address.
A defanged IP address replaces every period “.” with “[.]”.
Example 1:
Input: address = "1.1.1.1"
Output: "1[.]1[.]1[.]1"
Example 2:
Input: address = "255.100.50.0"
Output: "255[.]100[.]50[.]0"
풀이
사실 위 문제는 난이도가 어려운 문제는 아니다. 굉장히 쉽게 풀리는 문제이지만 릿코드에서 재미있는점은 바로 성능부분이다. 메모리를 얼마나 사용했는지 처리속도는 얼마나 빠른지 상대적 지표와 절대적 지표가 함께 나와서 이 부분이 구현에 따라 달라지는걸 보는 재미가 있는것같다.
코드 풀이
var defangIPaddr = function(address) {
return address.split('.').a.join('[.]')
};
자바스크립트에있는 내장 메소드를 사용하여 한줄로 코드를 작성하였다.
- Runtime: 84 ms
- Memory Usage: 38.6 MB
개선한 풀이
var defangIPaddr = function(address) {
let result = '';
[...address].map(s => {
if (s === '.') {
result += '[.]'
} else {
result += s
}
})
return result
};
- Runtime: 64 ms
- Memory Usage: 38.3 MB
메모리 사용량은 비슷하지만 실행속도에서 차이가 좀 나는걸 확인 할 수 있다. 성능차이에 대한 이유는 처음 사용했던 내장 메소드가 어떻게 동작하는지를 봐야 알 수 있을것같은데 결론은 메소드보다는 간단한건 직접 구현하는쪽이 실행속도면에서는 더 낫다 라고 볼 수 있을것같다.
조금더 가독성 측면에서 개선한다면 내부 조건문을 삼항연산자로 사용할 수 있을것같다.
개선한 풀이
var defangIPaddr = function(address) {
let result = '';
[...address].map(s => {
s === '.' ? result += '[.]' : result += s
})
return result
};
댓글남기기