새벽_나그네
12시 지난 새벽
새벽_나그네
전체 방문자
오늘
어제
  • 분류 전체보기
    • TIL
    • DevLog
    • Algorithm
    • ComputerScience
    • etc

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코딩
  • 내일배움캠프
  • til
  • machine learning
  • 개발일지
  • 코딩프로젝트
  • 프로그래머스
  • 내일배움단
  • AI트랙
  • TodayILearned
  • Python
  • 내일배움카드
  • Github
  • 자기주도학습
  • portfolio
  • 국비지원
  • 코린이
  • docker
  • 스파르타코딩클럽
  • Selenium 4

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
새벽_나그네

12시 지난 새벽

Algorithm

[프로그래머스] 코딩테스트 연습월간 코드 챌린지 시즌1 3진법 뒤집기

2022. 8. 7. 13:45

문제

문제 설명

자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.

 

입력 & 출력

입출력 예

nresult

45 7
125 229

새로 사용한 함수

int(str, base)

진법 변환을 위하여 사용되는 함수입니다. str에는 변경할 문자열을 넣고 base에는 해당 문자열이 몇 진수의 숫자를 나타내는 지를 넣어주면 됩니다.

위 식에서 표현한 것과 같이 str으로 넣어주는 것이 포인트 입니다.

 

풀이 과정

1. 2 8 16진법 같은 숫자는 파이썬에서 지원하는 진법 변환 함수가 있기 때문에 그것을 사용하면서 결괏값의 처음 자리와 두 번째 자리를 슬라이싱 해서 사용하면 되지만 3진법은 지원해주는 함수가 없기 때문에 이 내용을 커스텀합니다. 

2. divmod() 함수를 이용하여 몫과 나머지를 구하게 되고 이를 result값에 하나하나 붙여주게 됩니다. 이렇게 하면 3진법을 역순으로 만드는 값으로 출력하게 되는데 문제에서 역순으로 된 값을 10진법으로 바꾸는 것을 목표로 하였기 때문에 이것을 역순으로 바꾸는 로직없이 이 숫자를 10진법으로 변환하면 됩니다.

3. 3진법을 10진법으로 변환할 때는 int()에서 제공하는 int(str, base) 함수를 이용하여 변경하고 이 값을 answer값으로 리턴해주면 됩니다.

 

코드

def solution(n):
    result = ''
    answer = 0
    while n > 0:
        n, mod = divmod(n, 3)
        result += str(mod)
        answer = int(result, 3)
    return answer
저작자표시 비영리 변경금지

'Algorithm' 카테고리의 다른 글

[프로그래머스] 정수 제곱근 판별  (0) 2022.08.09
[프로그래머스] 코딩테스트 연습완전탐색 최소직사각형  (0) 2022.08.08
[프로그래머스] 코딩테스트 연습Summer/Winter Coding(~2018) 소수 만들기  (0) 2022.08.06
8-5[코딩테스트] 알고리즘 연습  (0) 2022.08.05
[프로그래머스] 코딩테스트 연습2017 팁스타운 예상 대진표  (0) 2022.08.05
    'Algorithm' 카테고리의 다른 글
    • [프로그래머스] 정수 제곱근 판별
    • [프로그래머스] 코딩테스트 연습완전탐색 최소직사각형
    • [프로그래머스] 코딩테스트 연습Summer/Winter Coding(~2018) 소수 만들기
    • 8-5[코딩테스트] 알고리즘 연습
    새벽_나그네
    새벽_나그네
    IT, 프로그래밍, 정보, 스마트스토어

    티스토리툴바