본문 바로가기
ALGORITHMS/SOLUTION

[프로그래머스] 3진법 뒤집기

by alasdkfm 2023. 1. 1.

목차

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

    [ 풀이과정 (로직) ] 

    - 3진법으로 변경 후, 리스트에 추가 -> 10진법으로 변경한다 

    - 3진법으로 변경시, n을 3으로 나누고 난 나머지를 리스트에 추가

    - 가장 나중에 나온 값이 리스트의 0번째 값이 되므로, reverse를 해줄 필요는 없겠다 

     

    [ Solution 1 ] 

    def solution(n):
        result , target = 0, 3
        lst = []
    
        # 3진법 구화기 
        while(n):
            lst.append( n%target )
            n = n//3
    
        # 10 진법으로 변경
        for i in range(len(lst)):
            result += (lst[i] * pow( target , len(lst)-i-1   ) )
        return result

     

    [ Solution 2 ] - The better solution 

    def solution(n):
    	lst = []
        
        while n:
            #append
            lst += str(n%3)
            n = n//3
    
        return int( "".join(lst), 3 )

     

    [새롭게 알게 된 점] 

    1. 아래와 같은 방식으로도 int 와 str을 사용할 수 있다

    str('숫자 혹은 문자로 이루어진 문자열',해당 진법)
    int('숫자 혹은 문자로 이루어진 문자열',해당 진법)
    
    # ex . 
    # 10을 3진법으로 변경 & int형 자료형
    int ( 10, 3)

    2. 리스트에 append가 아닌 +=를 이용해서도 요소값을 추가 할 수 있다 

    n = 45
    while n:
    	lst += str(n%3)
    	n = n//3
        
    # lst = [0,0,2,1]

    'ALGORITHMS > SOLUTION' 카테고리의 다른 글

    [프로그래머스:PYTHON] 공던지기  (0) 2023.05.24
    [프로그래머스: PYTHON] 배열회전시키기  (0) 2023.05.24
    [백준:JAVA] 단어수학  (0) 2023.05.23
    [백준:PYTHON] 단어 수학  (0) 2023.05.23
    [백준] 1004_어린왕자  (0) 2023.02.20