사과먹는중
당근먹는하니
귀엽고 행복해
당근먹는하니
전체 방문자
오늘
어제
  • 분류 전체보기 (274)
    • 다람쥐🐿 (26)
    • C++ 공부빵야 (7)
    • 공부👻 (5)
    • 프론트엔드✏️ (228)
      • 코드캠프 (120)
      • 팀 프로젝트✨ (31)
      • 개인공부 (67)
    • 프론트엔드 - 바닐라js (7)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 회고
  • 팀 프로젝트
  • 배포
  • 팀플
  • 리액트
  • 배열
  • JS
  • 코딩 부트캠프
  • refreshtoken
  • 프로그래머스
  • 프론트엔드
  • graphql
  • 부트캠프
  • 팀프로젝트
  • React-hook-form
  • typescript
  • HTML
  • next.js
  • emotion
  • 공통 컴포넌트
  • javascript
  • algorithm
  • react
  • ssg
  • 알고리즘
  • javascrpit
  • 코딩
  • 코드캠프
  • CSS
  • 자바스크립트

최근 댓글

최근 글

티스토리

250x250
반응형
hELLO · Designed By 정상우.
당근먹는하니
프론트엔드✏️/코드캠프

알고리즘 - 3진법 뒤집기, 2진 변환 반복

알고리즘 - 3진법 뒤집기, 2진 변환 반복
프론트엔드✏️/코드캠프

알고리즘 - 3진법 뒤집기, 2진 변환 반복

2022. 6. 23. 10:05
728x90
반응형

 

 삼진법으로 대체 어떻게 뒤집지 하고 숫자가 3의 i승과 3의 i+1승 사이에 있으면 일단 3의 i에 1을 더하고 ,,,, 나머지도 이런 식으로 구해야하나 하고 고민하다가 결국 구글링했다. 자바스크립트 정답을 보려던건 아니고 어떻게 구하는 규칙?방법이 있나 싶어서 검색한건데 자바스크립트로 진수 변환하기를 봐버렸고.... 

 

function solution(n) {

  console.log(n.toString(3)) // 1200

}

solution(45);

 toString() 하면 그 숫자의 진법으로 변환되어서 나오는데 toString이? 대체 원리가 뭐지 

 

숫자 및 BigInts의 경우 toString()은 선택적으로 기수(radix)를 매개변수로 취합니다.
기수의 값은 최소 2부터 36까지입니다.

기수를 이용함으로써 10진수를 (1, 2, 3, 4, 5...) 다른 진수로 변환할 수 있습니다.

 

라고 MDN에 써있는데 왜인지는 모르겠다. toString은 내가 알기론 문자열로 변환하여 반환하는 메서드인데. 

 

function solution(n) {

  console.log(n.toString(3)); // '1200'
  n = n.toString(3); 
  console.log(parseInt(n,3)); // 45

}

solution(45); // 7

parseInt를 쓰면 다시 10진수로 되돌릴 수 있다. 

 

parseInt() 함수는 문자열 인자를 파싱하여 특정 진수(수의 진법 체계에서 기준이 되는 값)의
정수를 반환합니다.

출처 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/parseInt

 

 


뒤집는 방법!  for문 i를 거꾸로 쓰기

 

n이 3진법으로 이뤄진 숫자고 10진법으로 바꿔줘.

 

reverse 는 자주 쓰일 것 ! 

 

 

이진 변환 반복하기

function solution(s) {
    var answer = [];
    
    let count = 0;
    let remove = 0;
    while(s!=="1") {
        count++;
        
        let temp = ""; // 숫자 1만 담는 문자열 변수
        for(let i =0; i< s.length; ++i) {
            if(s[i]==="0") {
                remove++;
                continue;
            }
            temp+=s[i];
        }
        s = temp.length;
        s = s.toString(2);
    }
    return [count, remove];
}

 

while 대신 쓸 수 있는 것 - recursion(재귀함수)

1. 원하는 결과가 나올때까지 자기 자신을 무한하게 실행하는 함수

2. while 반복문을 대체해서 사용할 수 있다. 

 

카운트 변수를 따로 만드는 게 아니라, count를 매개변수로 받을 수도 있다. 

 

728x90
반응형
저작자표시 비영리 동일조건 (새창열림)

'프론트엔드✏️ > 코드캠프' 카테고리의 다른 글

[문제 해결] Warning: Failed prop type: The prop `children` is marked as required in `InfiniteScroll`, but its value is `undefined`.  (2) 2022.06.23
[문제 해결] toast-ui 디폴트 밸류, 수정할 때 빈값 들어가는 문제, 랜딩 페이지 엔터쳐서 넘어가기  (0) 2022.06.23
220622 프론트엔드 부트캠프 43일차 : Memoization, @media(반응형 페이지), 토스트 에디터  (0) 2022.06.22
[문제] Do not add <script> tags using next/head 노랗고 긴 에러창 없애기  (0) 2022.06.22
알고리즘 - 크레인 인형뽑기 게임  (0) 2022.06.22
    '프론트엔드✏️/코드캠프' 카테고리의 다른 글
    • [문제 해결] Warning: Failed prop type: The prop `children` is marked as required in `InfiniteScroll`, but its value is `undefined`.
    • [문제 해결] toast-ui 디폴트 밸류, 수정할 때 빈값 들어가는 문제, 랜딩 페이지 엔터쳐서 넘어가기
    • 220622 프론트엔드 부트캠프 43일차 : Memoization, @media(반응형 페이지), 토스트 에디터
    • [문제] Do not add <script> tags using next/head 노랗고 긴 에러창 없애기
    당근먹는하니
    당근먹는하니

    티스토리툴바

    개인정보

    • 티스토리 홈
    • 포럼
    • 로그인

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.