본문 바로가기

코테/구름톤 챌린지

[ 구름톤 챌린지 ] 프로젝트 매니징

728x90

문제

플레이어는 구름 프로젝트의 일정을 관리하는 PM(프로젝트 매니저)이자 유일한 개발자다. 현재 구름 프로젝트를 완수하기 위해서는 N개의 기능 개발이 추가로 필요하다. 각 기능에는 1번부터 N번까지 번호가 붙어 있고, ¼번째 기능을 개발하는 데는 C분의 시간이 걸린다. 플레이어는 프로젝트를 기한 안에 끝내기 위해 철야 작업에 들어갔다. 플레이어가 철야 작업을 시작한 시각은 T시 M 분이다. 플레이어는 1번 기능부터 순서대로 개발을 진행하고, 한 기능 개발을 끝마치면 바로 다음 기능의 개발을 시작한다. 플레이어가 모든 기능 개발을 끝마친 시각을 구해보자.

입력

첫째 줄에 필요한 기능의 개수 N이 주어진다.

둘째 줄에 두 정수 T, M 이 공백을 두고 주어진다. 이는 현재 시각이 T시 M 분임을 의미한다.

다음 N개의 줄에는 정수 이가 주어진다. 번째 기능을 개발하는 데는 C분의 시간이

걸린다.

  • 1 ≤ N ≤ 100
  • 0 ≤ T ≤ 23
  • 0 ≤ M ≤ 59
  • 0 ≤ C ≤ 1000

출력

구름 프로젝트가 완료된 시각의 시와 분을 공백을 두고 출력하시오. 23시 59분에서 1 분이 지난 시작은 0시 0분이다.

제출 코드

const readline = require('readline');
let rl = readline.createInterface({
	input: process.stdin,
	output: process.stdout,
});
let input = [];
rl.on('line', (line) => {
	input.push(line.trim());
	if (input.length === Number(input[0]) + 2){
		rl.close();
	}
})

rl.on('close', () => {
	let n=Number(input[0]);
	let [nowH,nowM]=input[1].split(" ").map(Number);
	for(let i=0; i<n; i++){
		let costM=Number(input[i+2]);
		let tempM=nowM+costM;
		let completeM=tempM%60;
		let completeH=(nowH+Math.floor(tempM/60))%24;
		nowH=completeH;
		nowM=completeM;
	}
	console.log(nowH, nowM);
})

배운점

  • 처음 코드를 제출하고 통과를 못했었는데 아마 입력범위에 문제가 있었던것 같고
  • 숫자가 입력범위 안에 있어야하기 때문에 시와 분을 따로 계산한 것 같다.

느낀점

  • 테스트 케이스 3,5,16이 통과를 못해서 힘들었던 문제였다.
  • 또한 입력 데이터가 문자열이었기 때문에 map(Number)가 필요했다.
728x90