[프로그래머스] lv0. 개미 군단, 세균 증식

주연·2023년 2월 1일
0

Python 문제 풀이

목록 보기
17/20
post-thumbnail

개미 군단

230201

문제

문제 설명
개미 군단이 사냥을 나가려고 합니다. 개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 합니다. 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다. 예를 들어 체력 23의 여치를 사냥하려고 할 때, 일개미 23마리를 데리고 가도 되지만, 장군개미 네 마리와 병정개미 한 마리를 데리고 간다면 더 적은 병력으로 사냥할 수 있습니다. 사냥감의 체력 hp가 매개변수로 주어질 때, 사냥감의 체력에 딱 맞게 최소한의 병력을 구성하려면 몇 마리의 개미가 필요한지를 return하도록 solution 함수를 완성해주세요.

제한사항
hp는 자연수입니다.
0 ≤ hp ≤ 1000

입출력 예

hpresult
235
246
999201

풀이

def solution(hp):
    war, re = divmod(hp, 5)
    sol, er = divmod(re, 3)
    return war+sol+er

# hp // 장군 = 장군 마리 수, hp % 장군 = 남은 hp
# hp // 병정 = 병정 마리 수, hp % 병정 = 일 마리 수
  • 다른 사람 풀이
def solution(hp):    
    return hp // 5 + (hp % 5 // 3) + ((hp % 5) % 3)

나는 변수 생성해서 했는데 다른 사람들은 그냥 했네..
그래도 전에 배운 divmod를 사용해봐서 나름 만족

세균 증식

230201

문제

문제 설명
어떤 세균은 1시간에 두배만큼 증식한다고 합니다. 처음 세균의 마리수 n과 경과한 시간 t가 매개변수로 주어질 때 t시간 후 세균의 수를 return하도록 solution 함수를 완성해주세요.

제한사항
1 ≤ n ≤ 10
1 ≤ t ≤ 15

입출력
nt
210
715

풀이

def solution(n, t):
    return n * 2**t
  • 다른 사람 풀이
# 비트쉬프트 연산 사용
def solution(n, t):
    return n << t

오...비트 쉬프트를 처음 접했다. 아주 간편하고 좋다

비트 쉬프트 연산 <<, >>

정수 1개를 받아 2ⁿ배를 곱해 출력한다.

a << n # a*2ⁿ

이건 a의 값에 2ⁿ를 곱해 출력한다는 뜻이다.

a >> n # a*(1/2)ⁿ

반대로 이건 a의 값에 (1/2)ⁿ를 곱해 출력한다는 뜻이다.

8 << 1  # 16
8 << 2  # 8 * 4 = 32
8 >> 1  # 4
8 >> 2  # 8 * (1/4) = 2

10 << 1  # 20
10 << 2  # 10 * 4 = 40
10 << 3  # 10 * 8 = 80
10 >> 1  # 5
10 >> 2  # 10 * (1/4) = 2 
10 >> 3  # 10 * (1/8) = 1 
profile
공부 기록

0개의 댓글