개요

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

대충 3진법처럼 변환된다고 한다

 

풀이

숫자를 나눠보면 3으로 나누어 떨어질 때 4가 출력되는 것을 확인할 수 있고 나머지가 1이면 1, 나머지가 2면 그대로 2가 된다

따라서 나머지를 바로 대응할 수 있도록 [4,1,2]순서로 만들었고 인덱스 번호로 매핑시킨 뒤 주어진 숫자를 나누기 했다

 

그런데 아무리 돌려도 정답처리가 안되어 구글링을 해서 확인해보았다

 

-1로 왜 빼는지 이해를 잘 못했었는데 이 글을 보고 https://yabmoons.tistory.com/692 0의 유무 때문이고 그 이유로 몫을 하나 감소시켜 사용한다는 것은 납득은 됐는데 완전히 이해하긴 어려웠다

 

6을 3 * 2가 아닌 3 * 1 + 3으로 만들어 계산한다. 0을 표현할 수 없어서..

 

[ 프로그래머스 124 나라의 숫자 (Lv2) ] (C++)

프로그래머스의 124나라의 숫자(Lv2) 문제이다. [ 문제풀이 ] 프로그래머스의 124나라의 숫자 문제이다. 모든 수를 표현할 때, 1, 2, 4 만 사용할 때 주어진 숫자를 124나라의 숫자로 바꾸면 어떤 숫자

yabmoons.tistory.com

function solution(n) {
  let answer = "";
  let number = n;
  // 3진법으로 나머지가 1이면 그대로 1 나머지가 2이면 그대로 2 나머지가 0일떄 4가 나온다
  const ter = [4, 1, 2];

  while (n !== 0) {
    // 앞으로 쌓여야한다
    const div = n % 3;
    answer = ter[div] + answer;
    // 만약 3으로 정확히 나누어 떨어지게 되면 몫이 1 생긴다 따라서 -1해야함
    if (!div) n = parseInt((n - 1) / 3);
    else n = parseInt(n / 3);
  }
  return answer;
}

'알고리즘' 카테고리의 다른 글

[알고리즘] 3 x N 타일링  (0) 2022.10.31
[알고리즘] 2 x n 타일링 js  (1) 2022.10.30
[알고리즘] 키패드 누르기 js  (0) 2022.10.29
[알고리즘] 햄버거 만들기 js  (0) 2022.10.29
[알고리즘] 게임 맵 최단거리  (0) 2022.10.29
복사했습니다!