[goormlevel] 통증

J. Hwang·2024년 7월 5일
0

coding test

목록 보기
9/108

문제

구름-그라운드 게임에는 통증이라는 시스템이 있다. 통증 수치가 높다면 게임에서 승리하기 어려워지므로, 아이템을 적절히 사용해 통증 수치를 0으로 유지하는 것이 중요하다.
게임 안에는 통증 수치를 감소시켜 주는 아이템이 3 종류가 있다. 아이템의 이름은 bandage,medicine,painkiller이고, 각 아이템을 사용시 1,7,14만큼 통증 수치를 감소시켜 준다. 각 아이템은 원하는 만큼 획득할 수 있다. 플레이어는 적과의 전투에서 피해를 입어 현재 N의 통증 수치를 가지고 있다. 플레이어가 통증 수치를 0으로 줄이기 위해 필요한 아이템의 최소 개수를 구해보자. 단, 사용했을 때 통증 수치가 0보다 작아지는 아이템은 사용할 수 없음에 유의하시오.


입력

첫째 줄에 플레이어의 통증 수치를 나타내는 정수 N이 주어진다.

  • 1 \leq N \leq 10910^{9}

내 풀이

def number_of_items(int1):
	bandage = 1
	medicine = 7
	painkiller = 14
	
	p1 = int1//painkiller
	
	if p1 >= 1:     # at least one painkiller
		int2 = int1 - painkiller*p1
		m1 = int2//medicine
		if m1 >= 1:
			int3 = int2 - medicine*m1
			return p1 + m1 + int3   # Use all p, m, b
		else:
			return p1 + int2  # Use p, b
		
	else:       # no painkiller
		m1 = int1//medicine
		if m1 >= 1:
			int2 = int1 - medicine*m1
			return m1 + int2   # Use m, b
		else:
			return int1

input1 = input()

print(number_of_items(int(input1)))

코멘트

더 효율적으로 구현하는 방법이 있지 않을까?

→ 구하는 방식은 똑같지만 훨씬 간단하게 다시 풀었다. (25.03.20)

n = int(input())

if n >= 14:
    a = n//14
    rest = n-14*a
    b = rest//7
    rest1 = rest - 7*b
    print(a+b+rest1)
elif 7 <= n < 14:
    a = n//7
    rest = n-7*a
    print(a+rest)
else:
    print(n)

References

https://level.goorm.io/

profile
Let it code

0개의 댓글