본문 바로가기

코테/구름톤 챌린지

[ 구름톤 챌린지 ] 통증

728x90

문제

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

입력

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

  • 1≤ N ≤ 10^9

출력

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

제출코드

const readline = require('readline');
let rl = readline.createInterface({
	input: process.stdin,
	output: process.stdout,
});
let input=[];
let n =Number(input);
let answer=0;

rl.on('line', (line) => {
	input.push(line);
});

rl.on('close', () => {
	let n =Number(input);
	while(n>0){
	if(n===1 ||n===7 || n===14){
		answer+=1;
		break;
	}else if(n<7){ 
		n-=1;
		answer+=1;
	}else if(n<14){ 
		n-=7;
		answer+=1;
	}else if (n>14){ 
		n-=14;
		answer+=1;
	}
}
	console.log(answer)
})

배운점

  • Greedy 알고리즘 의미에 대해 배웠다.

느낀점

  • 지금보니 반복되는 부분들이 많아서 다음에는 이 부분에 신경써서 동일한 코드를 줄이는 방식으로 구현해봐야겠다.
  • 2주차부터 문제의 난이도가 점점 올라가는 것을 체감했다.
728x90