[프로그래머스 / Level 1] 3진법 뒤집기 (파이썬)

2022. 4. 9. 23:40·🎲 알고리즘 공부/프로그래머스

📝 문제 요약

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

 

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

 

코딩테스트 연습 - 3진법 뒤집기

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

programmers.co.kr

 

3진법 = 0,1,2로만 표현되는 세상이다. 우리가 평소에 사용하는 건 10진수다. 

🎨 풀이

💡 첫번째 시도 = 성공(은 아니지만 다른 코드가 기억이 안난다 ㅠㅠ)

 

def solution(n):
    reverse_word = ''
    num = 0
    
    while n > 0:
        n, mod = divmod(n, 3)
        reverse_word += str(mod)
    
    return int(reverse_word,3)

 

> divmod는 몫과 나머지를 한번에 구해주는 함수다.

n, mod = divmod(n,3)은 n을 3으로 나눈후 몫을 n에 나머지를 mod에 넣어주는 코드다.

그 후 mod에 저장된 나머지를 하나씩 추가해주면 while문이 끝났을 때는 '앞뒤 반전된 3진법 숫자'가 된다.

(밑에 그림을 보면 이해가 쉽다)

 

divmod 사용

 

그 후, 10진법으로 다시 바꿔줘야하니 int 함수를 쓴다. int 함수는 base 기본값이 10진수다. 이 코드에서는 3진수를 10진수로 바꿔줘야하기 때문에 base 자리에 3을 적어주었다. 그렇게 해주고 리턴하면 끝난다~ 

더보기

int(string, base)

 

* divmod 관련 참고사항

무조건 divmod를 사용하는 게 좋은 방법은 아닙니다.
가독성이나, 팀의 코드 스타일에 따라서, a//b, a%b와 같이 쓸 때가 더 좋을 수도 있습니다.
또한, divmod는 작은 숫자를 다룰 때는 a//b, a%b 보다 느립니다. 대신, 큰 숫자를 다룰 때는 전자가 후자보다 더 빠르지요.
- 프로그래머스 파이썬을 파이썬답게 - 

출처 : https://programmers.co.kr/learn/courses/4008/lessons/12732

 

끝~

 

 

⭐ 느낀점

 

> divmod라는게 있었다는 걸 이 문제 풀면서 알게되었다. 몫과 나머지를 한 번에 저장할 수 있는 함수가 있다니,, 너무 신기했다. 사용할 일이 있을 때 종종 써먹어야겠다는 생각이 든다. int() 함수도 이번에 좀 제대로 배운 것 같다. 항상 10진수에서 n진수로 변환해주는건지 n진수에서 10진수로 변환해주는건지 헷갈렸는데 제대로 알게되었다! 배운게 많았던 문제다.

'🎲 알고리즘 공부 > 프로그래머스' 카테고리의 다른 글

[프로그래머스 / Level 1] 두 개 뽑아서 더하기 (파이썬)  (0) 2022.04.11
[프로그래머스 / Level 1] 예산 (파이썬)  (0) 2022.04.10
[프로그래머스 / Level 1] 약수의 개수와 덧셈 (파이썬)  (0) 2022.04.08
[프로그래머스 / Level 1] 폰켓몬 (파이썬)  (0) 2022.04.07
[프로그래머스 / Level 1] 체육복 (파이썬)  (0) 2022.04.06
'🎲 알고리즘 공부/프로그래머스' 카테고리의 다른 글
  • [프로그래머스 / Level 1] 두 개 뽑아서 더하기 (파이썬)
  • [프로그래머스 / Level 1] 예산 (파이썬)
  • [프로그래머스 / Level 1] 약수의 개수와 덧셈 (파이썬)
  • [프로그래머스 / Level 1] 폰켓몬 (파이썬)
듬듬
듬듬
  • 듬듬
    두드림
    듬듬
  • 전체
    오늘
    어제
    • 분류 전체보기 (280)
      • 📑 신입일기 (35)
      • 🍪 Web (1)
        • angular (1)
        • JavaScript (0)
      • 🧩 Node.js 공부 (2)
      • 🎲 알고리즘 공부 (192)
        • 프로그래머스 (76)
        • 백준 (96)
        • 코드업 (19)
      • 🎨 Tistory Customizing (1)
      • 💌 일상 (12)
        • 일상 (5)
        • 기록 (7)
      • 📜 자격증 (2)
        • 정보처리기사 (2)
      • 📗 spring boot 공부 (9)
      • 학교 공부 (20)
        • ICT 개론 (14)
        • 리눅스 (6)
      • ChatGPT 랑 놀기 (0)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    코린이
    백준
    연습문제
    정보처리기사
    6월 목표
    파이썬
    codeup
    행렬덧셈
    충무로
    코민이
    스프링부트
    BOJ
    스프링 부트
    50문답
    정처기
    찬양추천
    폰켓몬
    nodejs
    코드업
    카카오
    코테
    피보나치수
    컨텐더스
    오블완
    티스토리챌린지
    오버워치
    신입일기
    일기
    프로그래머스
    til
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
듬듬
[프로그래머스 / Level 1] 3진법 뒤집기 (파이썬)
상단으로

티스토리툴바