3진법 뒤집기

Sheryl Yun·2023년 7월 7일
0

문제 링크🔗

처음 풀이

정확도 테스트 1개에서 실패가 떴다. 동일하게 걸린 시간이 다른 테스트에도 있는 것으로 보아 시간 문제보다는 2번째 항인 용량 문제 같았다.

function solution(n) {
    return parseInt(n.toString(3).split('').reverse().join('') * 1, 3);
}

0.1MB를 줄여보자 😄

두 번째 풀이

아래와 같이 풀었더니 정확도 테스트를 모두 통과했다. reverse나 join과 같은 메서드를 체이닝해서 쓰면 용량이 더 커지나보다. (심지어 for문보다 더 크다..)

하지만 이 방법은 테스트 케이스는 모두 통과했지만 점수가 1점이 떴다 😂 다른 사람의 풀이를 참고해보았다.

function solution(n) {
    let third = n.toString(3);    
    let reversedThird = '';
    
    for (let i = third.length - 1; i >= 0; i--) {
        reversedThird += third[i];
    }
    
    return parseInt(reversedThird, 3);
}

새로운 풀이

맨 처음 방법을 보니 내가 작성한 첫 풀이에서 split 메서드만 spread 문법으로 바꿔준 풀이였다 😮 실제로 돌려보니 테스트 케이스도 모두 통과했다.

메서드를 쓰는 것보다 자바스크립트의 자체 문법을 쓰는 것이 더 낫다는 교훈(?)을 얻었다. 앞으로는 split 메서드를 쓰기 전에 spread 문법을 먼저 고려해 봐야겠다.

function solution(n) {
    return parseInt([...n.toString(3)].reverse().join(""), 3)
}
profile
영어강사, 프론트엔드 개발자를 거쳐 데이터 분석가를 준비하고 있습니다 ─ 데이터분석 블로그: https://cherylog.tistory.com/

0개의 댓글