반응형
프로그래머스 강의 <파이썬을 파이썬답게> 에서 숫자 num과 진법을 나타내는 base를 파라미터로 제공해줄 때, 10진법 숫자로 출력하라는 문제가 있었다. 나는 다음과 같은 코드로 짰다.
num, base = map(int, input().strip().split(' ')) # 프로그래머스 측에서 제공해주는 입력값을 받음
num = str(num)
length = len(num)
sum = 0
for i in range(length):
sum = sum + int(num[i])*pow(base, length-i-1)
print(sum)
잘 굴러는 갔는데, python답지 못하다고 할 것이다. 그러나 어쩌나... 이렇게 밖에 짤 줄 모르는 나다. 근데 python 내의 내장 함수를 이용하는 코드를 보니 살짝 충격적이었다. python의 내장 함수에 대해 너무 모르고 있는 게 아닌가 생각이 들었다. <파이썬을 파이썬답게>에서 제시해주는 코드를 활용하면 다음과 같이 짤 수 있다.
num, base = map(int, input().strip().split(' ')) # 프로그래머스 측에서 제공해주는 입력값을 받음
print(int(str(num), base))
int( ) 함수를 썼더니 단 한 줄이면 충분했다. 이참에 int( ) 함수에 대해 정리해보자. 정리는 여기를 참고했다.
int( ) 함수
1. int(x) : 문자열 혹은 실수 형태의 x를 정수로 반환한다. x가 문자열일 경우 따옴표 혹은 큰따옴표 안에는 정수 형태의 숫자가 담겨있어야 하며, x가 실수일 경우 소수점 이하는 버린 후 반환한다.
# int함수의 인자가 문자열일 경우
>>> int('3')
3
>>> int('3.5')
Traceback (most recent call last):
File "<pyshell#61>", line 1, in <module>
int('3.5')
ValueError: invalid literal for int() with base 10: '3.5'
# int함수의 인자가 실수일 경우
>>> int(3.7)
3
>>> int(3.1)
3
>>> int(3.316983018690)
3
2. int(x, radix) : radix 진수로 표현된 문자열 x를 10진수로 변환 후 반환한다. 오늘 새롭게 안 내용이 내용이 이것이다.
>>> int('1332', 4)
126
>>> int('2729', 11)
3540
>>> int('CAB04', 15)
643729
여기서 주의할 점은 첫번째 인자가 무조건 문자열이어야 한다는 것이다.
Source :
반응형
'Dev > Python' 카테고리의 다른 글
[파이썬/Python] 리스트의 정렬 방법 - sort함수와 sorted함수 (0) | 2020.03.11 |
---|---|
[파이썬/Python] 순열과 조합 (Permutation and Combination) (0) | 2020.03.10 |
[파이썬/Python] 재귀함수(Recursive function)와 메모이제이션(Memoization) (2) | 2020.03.02 |
[파이썬/Python] 리스트 안에서 반복문, Comprehension (0) | 2020.02.27 |
[파이썬/Python] divmod와 언패킹(unpacking)을 활용하여 몫과 나머지 구하기 (0) | 2020.02.24 |