본문 바로가기

Study/class note

python / 몫, 나머지 구하기(%, divmod)

062 나눗셈에서 나머지만 구하기(%)

나누기 연산에서 나머지를 구하는 연산자 : %

print(12%3)    # 나머지 0
print(12%5)    # 나머지 5

예제. 아래와 같이 두 개의 숫자를 각각 물어보게하고 아래의 메세지가 출력되게 하세요.

첫 번째 숫자를 입력하세요 ~ 1113

두번째 숫자를 입력하세요~ 23

x = int(input('첫번째 숫자를 입력하세요 ~ '))
y = int(input('두번째 숫자를 입력하세요 ~ '))
z = x%y
print('%d를 %d로 나누면 %d가 나머지로 남습니다.'%(x,y,z) )

나머지를 구하고 싶다면 '%' 연산자를 사용하면 되괴 몫을 구하고 싶다면 '//'연산자를 사용하면 됨.

print('나누기 1113/23 = ', 1113/23)
print('몫 1113//23 = ', 1113//23)
print('나머지 1113%23 = ',1113%23)

# 나누기 1113/23 =  48.391304347826086
# 몫 1113//23 =  48
# 나머지 1113%23 =  9

 

 

ㅁ 탐욕 알고리즘

머신러닝을 배울때 의사결정트리를 파이썬 코드로 구현할 때 사용되는 알고리즘

탐욕 알고리즘은 매 순간마다 최선의 선택을 하는 것. 선택할 때마다 가장 좋다고 생각되는 것을 선택해 나가며 최종적인 해답을 구하는 알고리즘. 

이 알고리즘을 설계할 때 주의할 점은 전체를 고려하는게 아니라 문제를 부분적으로 나누어 나누어진 문제에 대한 최적의 해답을 구하게끔 한다는 점.

 

- 다이나믹 프로그래밍? 큰 문제를 작은문제로 나누어서 작은문제들을 하나씩 해결하면서 결국 큰 문제를 해결하는 프로그래밍 <= 이 프로그래밍에 사용되는 알고리즘이 탐욕 알고리즘

 

ex) 14원의 잔돈을 줘야하는데 잔돈의 종류가 10원, 7원, 1원이 있을때 잔돈을 가장 빨리 주는 방법은 무엇인가?

= 7원 2개

하지만, 탐욕알고리즘은 다르게 거슬러 줌. 탐욕 알고리즘은 10원 1개, 7원 0개, 1원 4개를 줌.

 

- 탐욕 알고리즘 구현하기

예제1. 14를 10으로 나눈 몫을 구하시오.

print(14//10)   # 1

예제2. 14를 10으로 나눈 나머지 값을 구하시오.

print(14%10)    # 4

예제3. 잔돈의 종류 10, 7, 1을 담는 coin이라는 리스트를 만드시오.

coin = [10,7,1]

예제4. 14를 위의 coin이라는 리스트에 있는 요소들로 나눈 몫을 구하시오 

coin = [10,7,1]

for i in coin:
    print(14//i)

예제5. 위에서 출력된 몫들을 c라는 리스트를 생성하여 담으시오. 

coin = [10,7,1]

c =[]
for i in coin:
    n = 14//i
    c.append(n)
    
print(c)  # [1, 2, 14]

예제6. 위의 코드에 14가 하드코딩되는게 아니라  input함수를 써서 거스름돈을 입력받으시오.

a = int(input('거스름돈을 입력하시오~ '))
coin = [10,7,1]

c =[]
for i in coin:
    n = a//i
    c.append(n)
    
print(c)

예제7. 위의 코드를 가지고 아래와 같이 출력될 수 있도록 하려면 최종적으로 만들어져야하는 리스트가 [1,0,4]가 있어야 함. 현재 우리가 가지고 있는 리스트는 [1,2,14] 뿐임.

coin = [10,7,1]

 

14//10 --> 1

14%10 --> 4

 

4//7 --> 0

4%7 --> 4

 

4//1 --> 4

4%1 --> 0

 

거슬러 준 돈을 입력하세요 ~ 14

10원은 1개, 7원은 0개, 1원은 4개를 거슬러 줍니다.

a = int(input('거스름돈을 입력하시오~ '))
coin = [10,7,1]
c =[]

for i in coin:
    n = a//i
    c.append(n)
    a = a%i
    
print("10원은 %d개, 7원은 %d개, 1원은 %d개를 거슬러 줍니다."%(c[0],c[1],c[2]))

 

 

063 몫과 나머지 구하기(divmod)

몫을 구할 때는 //를 사용하고 나머지를 구할 때는 %를 사용했는데, 몫과 나머지를 한번에 구하고 싶다면 divmod를 사용하면 됨.

a,b = divmod(1113,23)
print(a,b)     # 48 9

문제219. 218번 코드를 divmod 함수를 이용해서 좀 더 간단하게 재작성하시오.

a = int(input('거스름돈을 입력하시오~ '))
coin = [10,7,1]
c =[]

for i in coin:
    n,a = divmod(a,i)
    c.append(n)
    
print("10원은 %d개, 7원은 %d개, 1원은 %d개를 거슬러 줍니다."%(c[0],c[1],c[2]))

 

반응형