☐ 문제 1
숫자 a, b가 주어졌을 때 a를 b로 나눈 몫과 a를 b로 나눈 나머지를 공백으로 구분해 출력해보세요.
제한 조건
- a와 b는 자연수입니다.
입출력 예
입력 예시 | 출력 예시 |
5 3 | 1 2 |
☑ Solution
a, b = map(int, input().strip().split(' '))
print(str(int(a/b))+ " " + str(int(a%b)))
몫을 구하는 과정에서 //연산자가 있다는 걸 잊어먹고 번거로운 짓을 했다. 다음은 다시 고친 코드다.
a, b = map(int, input().strip().split(' '))
print(str(a//b)+ " " + str(a%b))
✔ Feedback ✔
a, b = map(int, input().strip().split(' '))
print(*divmod(a, b))
- packing/unpacking : 쉽게 말해 묶고 푼다는 의미다. (divmod앞에 *을 붙여주지 않으면 ( ) 괄호 안에 답이 출력된다.)
- divmod : 몫과 나머지를 구한다.
주의할 점 : 무조건 divmod를 사용하는 게 좋은 방법은 아니다. 가독성이나, 팀의 코드 스타일에 따라서, a//b, a%b와 같이 쓸 때가 더 좋을 수도 있다. 또한, divmod는 작은 숫자를 다룰 때는 a//b, a%b 보다 느립니다. 대신, 큰 숫자를 다룰 때는 전자가 후자보다 더 빠르다.
☐ 문제 2
첫 번째 숫자는 num을 나타내며, 두 번째 숫자는 base를 나타냅니다. 'base' 진법으로 표기된 숫자를 10진법 숫자 출력해보세요.
제한 조건
- base는 10 이하인 자연수입니다.
- num은 3000 이하인 자연수입니다.
입출력 예
- 예 #1 3진법으로 표기된 12는 10진법으로 표현하면 5입니다. ( 1*3 + 2 )
- 예 #2 5진법으로 표기된 444는 10진법으로 표현하면 124입니다. ( 455 + 4*5 + 4 )
☑ Solution
num, base = map(int, input().strip().split(' '))
print(int(str(num),base))
- int(문자열, 기존 n진수) : 10진수로 변환할 수 있는 내장 함수다.
10진수로 변환할 때 첫 번째 매개변수로 문자열만 받기 때문에 str()로 변환했다.
예전에 이런 문제를 푼 적이 있어 어려움 없이 풀었다. 강의 노트에서도 내장 함수를 쓰라고 해서 의도에 맞게 잘 푼 것 같다.
'파이썬 강의 > 파이썬을 파이썬답게' 카테고리의 다른 글
[파이썬을 파이썬답게] Part 06. Itertools / Collections 모듈 (Programmers) (1) | 2023.10.17 |
---|---|
[파이썬을 파이썬답게] Part 05. Sequence Types 다루기 (Programmers) (1) | 2023.10.17 |
[파이썬을 파이썬답게] Part 04. Iterable 다루기 (Programmers) (1) | 2023.10.17 |
[파이썬을 파이썬답게] Part 03. Str 다루기 (Programmers) (1) | 2023.10.16 |
[파이썬을 파이썬답게] Part 01. Python 꿀팁 (Programmers) (0) | 2023.10.16 |