문제 설명
숫자 a, b가 주어졌을 때a를 b로 나눈 몫
과a를 b로 나눈 나머지
를 공백으로 구분해 출력해보세요.
입력 설명
입력으로는 공백으로 구분된 숫자가 두 개 주어집니다.
첫 번째 숫자는a
를 나타내며, 두 번째 숫자는b
를 나타냅니다.
출력 설명
a를 b로 나눈 몫과
a를 b로 나눈 나머지
를 공백으로 구분해 출력하세요.
제한 조건
a와 b는 자연수입니다.
입출력 예
input output 5 3 1 2
print(a//b, a%b)
파이썬의 divmod
와 unpacking을 이용하여 몫과 나머지를 구할 수 있다.
print(*divmod(a,b))
참고 사항
무조건divmod
를 쓰는 것이 좋은 것은 아님!! 가독성, 코딩스타일을 고려하여 사용
또한,divmod
는 작은 숫자를 다룰 때는a//b
,a%b
보다 느리지만,
큰 숫자를 다룰 때는divmod
가 더 빠름
문제 설명
base
진법으로 표기된 숫자를 10진법 숫자 출력해보세요.
입력 설명
입력으로는 공백으로 구분된 숫자가 두 개 주어집니다.
첫 번째 숫자는num
을 나타내며, 두 번째 숫자는base
를 나타냅니다.
출력 설명
base
진법으로 표기된num
을 10진법 숫자로 출력해보세요.
제한 조건
-base
는 10 이하인 자연수입니다.
-num
은 3000 이하인 자연수입니다.
입출력 예
input output 12 3 5 444 5 124 입출력 예 1
3진법으로 표기된 12는 10진법으로 표현하면 5입니다. ( 1*3 + 2 )
입출력 예 2
5진법으로 표기된 444는 10진법으로 표현하면 124입니다. ( 4*5*5 + 4*5 + 4 )
num = '3212'
base = 5
answer = 0
for idx, n in enumerate(num):
i = len(num) - idx -1
answer += int(n) * (base ** i)
🤔 개선 사항
리스트 슬라이싱을 이용하면 코드를 더 줄일 수 있다for idx, n in enumerate(num[::-1]): answer += int(n) * (base ** idx)
리스트 슬라이싱 (List Slicing)
리스트변수[시작인덱스:종료인덱스:step]
종료 인덱스의 원소는 포함되지 않으며 step은 생략 가능함
step을 활용하여리스트변수[::-1]
과 같이 리스트를 reverse할 수 있음
파이썬의 int(x, base=10)
함수를 이용하여 진법 변환이 가능하다.
num = '3212'
base = 5
answer = int(num, base)
✔ int 함수의 첫 번째 파라미터는 문자열 또는 숫자 형식이어야 함
단, 두 번째 파라미터를 입력하려는 경우 첫 번째 파라미터는 문자열 형식인 것에 유의!#가능 int(99) int(99.9) int('99') int('99', 11) #불가능 int(99, 11)
Programmers - 파이썬을 파이썬답게 https://programmers.co.kr/learn/courses/4008