[level 1] 3진법 뒤집기

2022. 1. 13. 22:35·알고리즘/JavaScript

문제

 

풀이 코드

let triadNum = [];

function solution(n) {
  let decimal = 0;
  setTriad(n);
  return triadNum
    .map((num, index) => num * 3 ** index)
    .reduce((sum, current) => sum + current, 0);
}

function setTriad(n) {
  if (n >= 3) {
    setTriad(n / 3);
    setTriad(n % 3);
  } else {
    triadNum.push(Math.floor(n));
  }
}

 

풀이 과정

42서울을 하며 진법변환을 위해 함수를 많이 만들었었다...

2진법, 16진법, 10진법 등등

그 아이디어가 생각나서 별도의 함수를 만들고 해당 함수에서 3진법으로 변환하게 하였다!

 

전역변수로 빈 배열을 선언한후, 해당 배열에 3진법으로 변환되는수 하나하나 추가했다

 

이후, map 함수를 통하여, 첫번째 인덱스부터 3 ** 0 , 3 ** 1 , ... 이렇게 된다 ( 문제에서 뒤집어 변환하기 라고 되어있다. )

처음에 요소를 뒤집었지만, 인덱스로 접근하면 굳이 뒤집지 않고 계산만 하면 된다고 생각이 들었다!!

 

그래서 reduce 함수로 각 요소를 더하여 해당 값을 반환하였다

근데 너무 코드가 지저분하다고 느껴졌다.

 

다른사람의 코드를 보고 경악을 금치 못했다

 

다른사람의 코드

const solution = (n) => {
    return parseInt([...n.toString(3)].reverse().join(""), 3);
}

이게 뭐지?

 

toString 함수로 진법 변환이 되는것도 신기한데

parseInt 함수를 이용해 진법 변환까지 가능하다

 

이래서 기초지식이 잘 파악되어야 한다

 

이부분은 나중에 다시 봐야겠다 특히 toString 과 parseInt 함수에 대해서

'알고리즘/JavaScript' 카테고리의 다른 글
  • [level 1] 약수의 합
  • [level 1] 시저 암호
  • [level 1] 정수 내림차순으로 배치하기
  • [level 1] 정수 제곱근 판별
Jeohong
Jeohong
기억 보단 기록을
  • Jeohong
    Chikong Devlog
    Jeohong
  • 전체
    오늘
    어제
    • 분류 전체보기 (185)
      • ---- 개발 컨텐츠 ---- (0)
      • iOS (30)
        • Swift 문법 (1)
        • iOS 개념 (12)
        • HIG (5)
        • SwiftUI (7)
        • UIKit (4)
      • Side Project (0)
      • 개발서적 (4)
        • 객체지향 사실과 오해 (4)
      • 알고리즘 (73)
        • 자료구조 개념 (2)
        • Swift (24)
        • JavaScript (47)
      • ---- 회고 계획 컨텐츠 ---- (0)
      • 계획 및 일기 (10)
      • 회고록 (1)
      • 컨퍼런스 탐방 (1)
      • 미드로 영린이 탈출하기 (1)
      • ---- Previous content ---- (0)
      • Frontend (2)
        • HTML & CSS (2)
      • KITRI 수업 (17)
        • 리눅스 (14)
        • 네트워크 (2)
      • 42seoul (17)
        • Bonr2code (9)
        • 넋두리 (7)
        • 멘토특강 (1)
      • 해킹 실습 (20)
        • 해커스쿨 - F.T.Z (19)
        • WebGoat (1)
      • Tensorflow로 시작하는 NLP (1)
        • 예제 (1)
      • 자연어처리 입문 (1)
        • 이론 (1)
      • 텐서플로로 배우는 딥러닝 (7)
        • 이론 (2)
        • 예제 (5)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프로그래머스
    javascript
    네트워크
    개발자
    코딩
    IOS
    swift
    boj
    스위프트
    라피신
    본과정
    1서클
    자료구조
    42seoul
    hig
    SwiftUI
    알고리즘
    백준
    42서울
    Algorithm
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Jeohong
[level 1] 3진법 뒤집기
상단으로

티스토리툴바