[프로그래머스 연습문제] 124 나라의 숫자

2022. 2. 4. 12:19·레거시모음/알고리즘 문제풀이

프로그래머스 연습문제

문제풀러 바로가기👇👇👇👇👇👇

https://programmers.co.kr/learn/courses/30/lessons/12899

 

코딩테스트 연습 - 124 나라의 숫자

 

programmers.co.kr

 

문제풀이


124나라의 숫자는 기본적으로 3진수와 비슷하다.

3진법에서는 숫자를 0, 1, 2 순서로 표현한다면 124나라에서는 4, 1, 2 순서대로 숫자를 표기한다.

 

그런데 약간 다른 점이 있다.

1의 자리 숫자일 때, 3의 배수일 때는 일반 3진법 표기와 다르게 표기된다는 점이다.

 

-3의 배수가 아닐 때

10진법 3진법 124나라
1 1 1
5 12 12
7 21 21

3진법과 124나라의 표기가 동일하다는 것을 확인할 수 있다.

 

 

-3의 배수일 때

10진법 3진법 124나라
3 10 4
6 20 14
9 100 24

3의 배수일 때는 3진법에 의하면 다음 자리수를 증가시켜야하는데 (Carry가 발생)

124나라에서는 증가시키지 않는다는 걸 알 수 있다. 

6의 경우에는 3진법과 같다면 24이 되어야 하는데 14가 되어있는 것으로 보아

(다음자리수-1)로 표기되어있는 걸 알 수 있다.

 

이것을 확장해서 십의 자리수까지 살펴보자.

10 이라는 숫자를 예로 들어보겠다.

10 / 3 = 3 ... 1
3 / 3 = 1 ... 0

===> 101

3진법으로 표현한 결과는 위와 같다.

하지만 124나라의 표기법은 다르다.

10 / 3 = 3 ... 1   ==> 몫인 3은 3의 배수이므로 다음 자리수 증가시키지 않음
3 / 3 =  1 ... 0   

=====> 01
0은 4이므로  ==>  41

 

 

 

코드


def solution(n):
    num = ["4", "1", "2"]
    answer = ""
    while n > 0:
    	# 3진법 논리
        answer = num[n % 3] + answer
        
        # 3의 배수일 경우 다음자리수를 증가시키지 않음
        n = (n // 3) - (n % 3 == 0)
    return answer
  • 기본적으로 3진법의 논리를 이용한다.
  • 3진법의 논리에 3의 배수일 때만 다음 자리수를 증가시키지 않는 로직을 넣어주면 된다.
'레거시모음/알고리즘 문제풀이' 카테고리의 다른 글
  • [백준][파이썬] 1654번 랜선 자르기
  • [백준][파이썬] 10989번 수 정렬하기 3
  • [백준][파이썬] 점프왕 쩰리(small)
  • [백준][파이썬] DFS와 BFS
gakko
gakko
좌충우돌 개발기
  • gakko
    MYVELOP 마이벨롭
    gakko
  • 전체
    오늘
    어제
    • 분류 전체보기 (214)
      • 끄적끄적 (6)
      • Spring (21)
      • Java (3)
      • NestJS (1)
      • Redis (3)
      • RabbitMQ (0)
      • Test (3)
      • 대외활동 (36)
        • 부스트캠프 (23)
        • IT커뮤니티 (5)
        • 글또 (5)
        • 컨퍼런스 (3)
      • Infra (5)
        • Docker (1)
        • Jenkins (1)
        • AWS (1)
      • CS (26)
        • 자료구조 (13)
        • 운영체제 OS (12)
        • 데이터베이스 (1)
      • MySQL (7)
      • Git & GitHub (16)
        • Git (12)
        • Github Actions (1)
        • 기타(마크다운 등) (3)
      • 프로젝트 (2)
      • 리눅스 (6)
        • 기초 (6)
        • 리눅스 서버 구축하기 (0)
      • 후기 (3)
        • Udemy 리뷰 (3)
      • Python (12)
      • 레거시모음 (64)
        • 스프링 (11)
        • 자바 클래스&메소드 (1)
        • 오류해결 (18)
        • JSP & Servlet (12)
        • 자바스크립트 기초 (3)
        • React (2)
        • 이클립스 (1)
        • 알고리즘 문제풀이 (16)
      • 디자인패턴 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 우진님
  • 공지사항

  • 인기 글

  • 태그

    os
    Git
    자바스크립트
    알고리즘
    파이썬
    GitHub
    부스트캠프 7기
    운영체제
    스프링부트
    Spring
    MySQL
    오류해결
    Python
    부스트캠프 멤버십
    스프링
    자바
    jsp
    java
    웹개발
    부스트캠프
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
gakko
[프로그래머스 연습문제] 124 나라의 숫자
상단으로

티스토리툴바