처음에 n진법으로 바꾸는 방법이 생각이 안나 찾아봤는데
해당되는 숫자로 나누고 몫과 나머지로 하면 된다는것이 생각났음.
일단 파이참에서 돌려보기 위해 이것저것 작성해봄
number=125
n=3
answer=''
while number:
answer=answer+str(number%n) # 나머지 추가
number=number//n # 몫으로 변경
answer_list=list(answer) #위와같은 작업을 하니까 애초에 역순으로 리스트가 만들어짐
answer_list.reverse() #그래서 순서를 맞추기 위해 리버스를함
answer_end=''.join(answer_list)
print(answer_list)
print(answer_end)
근데 여기서 알아둬야 할것이, 문자열에서 reverse 하는 방법은 없다는것
그래서 문자열을 answer_list=list(answer)를 통해 리스트로 만들어 주었고
answer_list.reverse() 를 통해 순서를 바꾼후
''.join(answer_list) 을 통해 다시 문자로 바꿔줌
근데 문제에서 보면 애초에 3진법상에서 앞뒤로 뒤집은 후라고 했으니 정작 문제풀때는 이 작업을 진행 하지 않아도됨
그리고 나는 n진법으로 바꾸는건줄 알았는데
애초에 3진법으로 고정되어 있고 숫자 n이 바뀌는것이었음
이를 반영하여 코드를 작성 한 결과
def solution(n):
answer=''
while n:
answer=answer+str(n%3) # 나머지 추가
n=n//3 # 몫으로 변경
answer_10=0
for i in range(1,len(answer)+1):
answer_10+=int(answer[-i])*(3**(i-1))
return answer_10
여기서 헷갈렸던게 for 범위 지정하는거였는데 하나씩 일일쳐 가면서 확인하면서 함
이거 계속 다뤄봐야 감이 좀 올것 같음
꾸역꾸역 성공...
'TIL' 카테고리의 다른 글
240701 TIL (0) | 2024.07.01 |
---|---|
240628-(S)(40)루시와 엘라 찾기 / 1주차 라이브세션 과제 (0) | 2024.06.28 |
240627-(S)(39)성분으로 구분한 아이스크림 총 주문량 / (43)조건에 맞는 사용자와 총 거래금액 조회하기 (0) | 2024.06.27 |
240627-(P)최대공약수와 최소공배수 (0) | 2024.06.27 |
240626-(S) 조건별로 분류하여 주문상태 출력하기 (0) | 2024.06.26 |