Programming/Python

[Python] 몫과 나머지 - divmod(feat.프로그래머스[파이썬을 파이썬답게])

삐주 2020. 9. 21. 17:11
728x90
반응형

다른 언어는 배워서 알고 있지만 파이썬은 처음 배우는 언어이다보니 많이 미숙한데 프로그래머스에서 이러한 프로그래머들을 위해 알기쉽게 해설한 강의가 있어서 추천겸 공부한 내용을 공유하고자 글을 쓰게 되었다.

 

programmers.co.kr/learn/courses/4008

 

해당 링크로 접속을하면 "파이썬을 파이썬답게"라는 강좌가 나온다. 해당 강좌를 토대로 공부한 내용이다.

 

*divmod라는 함수를 사용하기 전에 해당 강좌에서는 문제가 주어졌다.


문제 설명

숫자 a, b가 주어졌을 때 a를 b로 나눈 몫 a를 b로 나눈 나머지를 공백으로 구분해 출력해보세요.

 

입력 설명

입력으로는 공백으로 구분된 숫자가 두 개 주어집니다.
첫 번째 숫자는 a를 나타내며, 두 번째 숫자는 b를 나타냅니다.

 

출력 설명

a를 b로 나눈 몫 a를 b로 나눈 나머지를 공백으로 구분해 출력하세요.

 

제한 조건

a와 b는 자연수입니다.

 

입력 예

5 3

 

출력 예

1 2


나의 코드

a, b = map(int, input().strip().split(' '))
print(str(a//b) + " " +str(a%b))

대다수의 코드

a, b = map(int, input().strip().split(' '))
print(a//b, a%b)

모범답안

a, b = map(int, input().strip().split(' '))
print(*divmod(a,b) )

알게 된 내용

  1. print할 때 변수의 값을 나열 할 경우에는 ,의 형태로 나열하면 쉽게 표기할 수 있다. ex) print(a,b,c)
  2. *divmod 라는 함수를 통해 나눈값과 나머지 값을 동시에 표기할 수 있다.

추가로, 나눈 값과 나머지를 구할 때 무조건 divmod를 사용하는게 좋은 방법은 아니다.

가독성이나, 코드 스타일에 따라서 a//b, a%b 를 사용하는게 더 좋은 점도 있을 뿐더러

divmod의 경우에는 작은 숫자를 다룰때에는 a//b, a%b 보다 느리다.

때문에 상황에 따라서 조리있게 사용하는 것을 추천한다. (참고: Stack Overflow)

 

 

 

참고: programmers.co.kr/learn/courses/4008

 

파이썬을 파이썬답게

본 강의는 파이썬 문법을 이미 알고 있는 분들을 대상으로 만들어졌습니다. ##### 이런 분들께 추천합니다 * 파이썬 문법을 알고 계시는 분 * 알고리즘 문제를 조금 더 쉽게 풀고 싶은 분 * Python 코

programmers.co.kr

stackoverflow.com/questions/30079879/is-divmod-faster-than-using-the-and-operators

 

Is divmod() faster than using the % and // operators?

I remember from assembly that integer division instructions yield both the quotient and remainder. So, in python will the built-in divmod() function be better performance-wise than using the % and //

stackoverflow.com

 

728x90
반응형