일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- SQL
- 전처리
- 크롤링
- lambda
- If
- jd
- data analyst
- 기초프로젝트
- 데이터 분석
- 태블로
- Chat GPT
- 프로젝트
- cross join
- pandas
- 군집화
- 서브쿼리
- 머신러닝
- 최종 프로젝트
- 데이터분석
- Python
- SQLD
- 팀프로젝트
- streamlit
- 시각화
- da
- 클러스터링
- 기초통계
- 프롬프트 엔지니어링
- 히트맵
- GA4
Archives
- Today
- Total
세조목
Python 예제(3진법 뒤집기) 본문
https://school.programmers.co.kr/learn/courses/30/lessons/68935
진법 뒤집기 문제입니다.
10진법인 수를 3진법으로 바꾸고,
이를 다시 10진법으로 바꿔줘야합니다.
n진법을 10진법으로 만드는건 int함수를 써서 쉽게 할 수 있지만
10진법을 3진법으로 만들기 위해서는 별도의 함수를 만들어야합니다.
3진법을 만드는 방법은 아래 이미지와같습니다.
진법을 바꾸고자하는 숫자를 n진법 n으로 나눠주면서
가장 마지막 나머지부터 순서대로 나열하면 그 수가 바로 변경된 진법의 수입니다.
위 예시에서의 경우 10진수인 45를 3진수로 변환하는 과정인데
몫이 0이 나올때가지 숫자 45를 3으로 계속해서 나눠주며
가장 마지막에 나오는 나머지 1부터 순서대로 나열한 1200이 3진수 값이 됩니다.
이를 파이썬 코드로 작성하면 아래와 같습니다.
def solution(n):
answer = ''
while n > 0:
quo, remain = divmode(n)
answer+=str(remain)
while문을 활용해서
n이 0보다 작거나 같아지지 않는다면
계속해서 n의 몫과 나머지를 구하고
나머지는 변수 answer에 더해줍니다.
여기서 divmode란 변수의 몫과 나머지를 한번에 구할 수 있는 내장함수입니다.
위 코드의 결과값은 0021로
이를 다시 10진법으로 바꾸기위해 int함수를 써주면
숫자 7이 출력됩니다.
def solution(n):
answer = ' '
while n > 0:
n, re = divmod(n,3)
answer += str(re)
return int(answer, 3)
int함수를 가지고서 n진법을 10진법으로 바꿀때
두 번째 인자에는 기존의 수가 몇 진법인지를 나타내는 수를 넣어주면 됩니다.
2진법이면 2
3진법이면 3
16진법이면 16
이렇게 말이죠.
'데이터 분석 공부 > Python' 카테고리의 다른 글
Python - lambda함수 (0) | 2024.03.11 |
---|---|
Python - shape속성 & loc와 iloc의 차이 (0) | 2024.03.11 |
Python 정리(데이터 카운팅 - count, size, value_counts, unique, nunique)(24.02.07) (1) | 2024.02.07 |
Python 정리(replace, shape, enumerate)(24.02.03) (0) | 2024.02.03 |
Python 정리(데이터 시각화)(24.01.25) (1) | 2024.01.25 |