프로그래밍/Python

프로그래머스_코딩테스트연습_124나라의 숫자

donie 2020. 9. 24. 06:32

1. 문제

출처 : 프로그래머스

2. 소스코드

def calc(r, answer):
    if r==0 : answer = '1' + answer
    elif r==1 : answer = '2' + answer
    else : answer = '4' + answer
    #print('answer: ' , answer)
    return answer

def solution(n):
    answer = ''
    q, r = divmod(n-1, 3) #(n-1)/3의 몫, 나머지
    #print('q, r = ', q, ' ', r)
    
    while q != 0 : #몫=0이면 종료
        #print('q, r = ', q, ' ', r)
        answer = calc(r, answer)
        q, r = divmod(q-1, 3)
    
    answer = calc(r, answer)
    #print('최종 answer: ' , answer)
    return answer

 

3. 고찰

1) 파이썬 나눗셈 a ÷ b = c (몫) ··· d (나머지)이라 할 때,

c = a//b

d = a%b

c, d = divmod(a,b)

이렇게 구할 수 있다.

* a/b은 일반적인 나눗셈이다. ( ex. 5/2=2.5 )

 

2) 문자열을 합칠 때 + 기호를 사용한다.

 

3) calc함수는 나머지에 따라 answer의 값을 정해주는 함수이다.

이때, answer를 리턴해주지 않아도 매개변수인 answer의 값이 변하는지 해보았는데, 값이 변하지 않았다. (c++에서는 call-by-value의 개념)

python에는 mutable, immutable 속성이 있다. 

이 속성은 자료형에 따라 결정된다.

mutable : 리스트, 딕셔너리

immutable : 숫자형, 문자열, 튜플