본문 바로가기

알고리즘/구름톤 챌린지

[구름톤 챌린지] 2주차 8일차 통증

728x90

문제


구름-그라운드 게임에는 통증이라는 시스템이 있다. 통증 수치가 높다면 게임에서 승리하기 어려워지므로, 아이템을 적절히 사용해 통증 수치를 $0$으로 유지하는 것이 중요하다.

게임 안에는 통증 수치를 감소시켜 주는 아이템이  $3$종류가 있다. 아이템의 이름은 bandage, medicine, painkiller 이고, 각 아이템을 사용 시  $1, 7, 14$만큼 통증 수치를 감소시켜 준다. 각 아이템은 원하는 만큼 획득할 수 있다.

플레이어는 적과의 전투에서 피해를 입어 현재 $N$의 통증 수치를 가지고 있다. 플레이어가 통증 수치를 $0$으로 줄이기 위해 필요한 아이템의 최소 개수를 구해보자. 단, 사용했을 때 통증 수치가 $0$보다 작아지는 아이템은 사용할 수 없음에 유의하시오.

입력


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

 

  • $1 \leq N \leq 10^9$

출력


플레이어가 통증 수치를 $0$으로 줄이기 위해 필요한 아이템의 최소 개수를 출력한다.

 


문제 접근 방식


그리디적으로 문제를 해결했다.

 

최대 $14$만큼 통증을 줄일 수 있으므로, $14$만큼 줄일 수 있다면 항상 그렇게 줄이는 것이 최선이다.

 

따라서 그렇게 통증을 줄이고, 남은 통증은 $7, 1$ 순으로 써가며 통증을 줄이는 방식을 택했다.

 

구현은 나눗셈과 몫으로 구현하였다.  

 


정답 코드


# 통증
import sys
input = sys.stdin.readline

N = int(input())
total = 0
total += N//14
N %= 14
total += N//7
N %= 7
total += N
print(total)

 


특별히 배운 점


이전에 백준에서 거의 똑같은 문제를 푼 기억이 난다.

https://www.acmicpc.net/problem/10162

 

10162번: 전자레인지

3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은

www.acmicpc.net

이 문제였던 걸로 기억이 나는데, 이것보다 더 쉬우니, 이 문제는 브론즈 4정도 되는 난이도일 것 같다.