티스토리 뷰

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 : 숫자형, 문자열, 튜플

'프로그래밍 > Python' 카테고리의 다른 글

프로그래머스_더 맵게  (0) 2020.10.03
프로그래머스_프린터  (0) 2020.10.01
프로그래머스_다리를 건너는 트럭  (0) 2020.09.28
프로그래머스_주식가격  (0) 2020.09.28
백준 #9093  (0) 2020.09.22
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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 31
글 보관함