728x90
programmers.co.kr/learn/courses/30/lessons/68935
문제 설명
주어지는 자연수 n을 3진법으로 바꾸고 그 3진법을 앞뒤로 뒤집은 후 이를 다시 10진법으로 표현한 수를 구하는 문제.
문제 풀이
- 3진법으로 바꾼 수를 담는 tmp를 ""로 초기화한다.
- 주어진 자연수 n을 3으로 나눈 나머지를 문자열로 변환하여 tmp의 뒤에 붙인다.
- n을 3으로 나눈 몫을 n에 다시 담는다.
- n이 0이될때까지 2~3 과정을 반복한다.
- 결과는 앞뒤로 뒤집어진 형태의 문자열이다.
- 만약 왼쪽에 0이 남아있다면 의미 없는 숫자이므로, strip을 이용하여 제거해준다.
- tmp에 남아있는 숫자를 for 문으로 순회하며 10진수 변환 해준다.
소스 코드
Python3
def solution(n):
answer = 0
tmp = ""
while n:
tmp += str(n%3)
n//=3
tmp = tmp.lstrip('0')
for i, t in enumerate(tmp):
print(answer)
answer += int(t) * 3 ** (len(tmp) -(i + 1))
return answer
3진수로 변환하는 과정은 그렇다 쳐도 10진수 변환하는 과정이 마음에 들지 않아 다른 풀이를 봤다.
역시 파이썬은 강력한 녀석이었다. 그냥 형변환 용도로 사용되는줄 알았던 int()가 놀라운 역할을 했다.
def solution(n):
answer = 0
tmp = ""
while n:
tmp += str(n%3)
n//=3
answer = int(tmp, 3)
728x90
300x250
728x90
programmers.co.kr/learn/courses/30/lessons/68935
문제 설명
주어지는 자연수 n을 3진법으로 바꾸고 그 3진법을 앞뒤로 뒤집은 후 이를 다시 10진법으로 표현한 수를 구하는 문제.
문제 풀이
- 3진법으로 바꾼 수를 담는 tmp를 ""로 초기화한다.
- 주어진 자연수 n을 3으로 나눈 나머지를 문자열로 변환하여 tmp의 뒤에 붙인다.
- n을 3으로 나눈 몫을 n에 다시 담는다.
- n이 0이될때까지 2~3 과정을 반복한다.
- 결과는 앞뒤로 뒤집어진 형태의 문자열이다.
- 만약 왼쪽에 0이 남아있다면 의미 없는 숫자이므로, strip을 이용하여 제거해준다.
- tmp에 남아있는 숫자를 for 문으로 순회하며 10진수 변환 해준다.
소스 코드
Python3
def solution(n):
answer = 0
tmp = ""
while n:
tmp += str(n%3)
n//=3
tmp = tmp.lstrip('0')
for i, t in enumerate(tmp):
print(answer)
answer += int(t) * 3 ** (len(tmp) -(i + 1))
return answer
3진수로 변환하는 과정은 그렇다 쳐도 10진수 변환하는 과정이 마음에 들지 않아 다른 풀이를 봤다.
역시 파이썬은 강력한 녀석이었다. 그냥 형변환 용도로 사용되는줄 알았던 int()가 놀라운 역할을 했다.
def solution(n):
answer = 0
tmp = ""
while n:
tmp += str(n%3)
n//=3
answer = int(tmp, 3)
728x90
300x250