프로그래머스 - LV.0 - 개미군단

박종일·2023년 9월 2일
1

프로그래머스 LV.0

목록 보기
40/46

나의 풀이

def solution(hp):
    answer = 0
    a = 0
    b = 0
    c = 0
    my_dict = {'big' : 5 , 'middle' : 3, 'small' : 1 }
    if hp <= 1000 :
        a = hp // my_dict['big']
        b = (hp - (5*a)) // my_dict['middle']
        c = (hp - (5*a) - (3*b)) // my_dict['small']
        answer = a + b + c
    
    
    return answer

최대한 변수가 무엇을 의미하는지 최대한 적고 싶어서 딕셔너리에 추가하였다.
사실 안해도 되는 과정이다.

다른 풀이

def solution(hp):
    answer = 0
    for ant in [5, 3, 1]:
        d, hp = divmod(hp, ant)
        answer += d
    return answer

divmod라는 메서드를 많이 사용한다. 이것을 공부해보도록 하자!

파이썬의 divmod() 내장 함수로 나눗셈하기

나눗셈을 하다보면 간혹 몫과 나머지를 동시에 구하고 싶을 때가 있는데요. 이럴 때 흔히 생각할 수 있는 방법이 동일한 두 개의 수를 대상으로 // 연산자와 % 연산자를 각각 호출하는 것입니다.

예시1

divmod(8, 2)
(4, 0)

예시2

divmod(8, 3)
(2, 2)

divmod() 함수는 두 개의 숫자를 인자로 받아, 첫번 째 숫자를 두번 째 숫자로 나눈 몫과 나머지를 튜플(tuple) 형태로 반환하는데요. 결국 divmod() 함수가 하는 일은 다음과 같이 일반 연산자를 사용하여 나타낼 수 있겠습니다.

divmod(x, y) = (x // y, x % y)

변수에 저장??

d , v = divmod(8,3)
print(d)
print(v)
# 2
# 2

우리는 divmod로 몫과 나머지를 동시에 구할 수 있습니다!

profile
존경하는 인물: 스토브리그 백승수 단장(남궁민)

0개의 댓글