알고리즘
백준 JS | 2525번 오븐시계
3jun
2022. 4. 13. 22:32
출처: 백준 온라인 저지
https://www.acmicpc.net/problem/2525
2525번: 오븐 시계
첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)
www.acmicpc.net
나의 코드 => 오답
const readline = require('readline');
const rl= readline.createInterface({
input: process.stdin,
output: process.stdout,
});
const input = [];
rl.on('line', function(line){
input.push(line);
}).on('close', function() {
let hour = input[0].split(' ')[0];
let min = input[0].split(' ')[1];
let cook = input[1];
let cookHr = parseInt(cook / 60);
let cookMin = cook % 60;
let doneHr = hour + cookHr;
let doneMin = min + cookMin;
if(doneMin >= 60) {
doneHr = doneHr + parseInt(doneMin / 60);
doneMin = doneMin % 60;
if ( doneHr >= 24) {
doneHr = doneHr - 24;
}
}
console.log(doneHr, doneMin);
});
위의 코드를 이렇게 저렇게 바꿔가며 제출해보아도 계속 오답이 나온다.
무엇인 무언인지 해결하기 위해 아래와 같은 소스코드에 문제에시 제시된 예시는 물론 내가 임의로 숫자를 주고 테스트를 해보면 값이 정상적으로 출력이 된다.
구글 답안
아무리 해결해봐도 정답을 찾을 수 없어 구글에서 답안을 참조하였다.
const readline = require("readline")
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
})
const input = []
rl.on("line", function(line) {
input.push(line)
}).on("close", function() {
// [[14 30], 20]
let hour = input[0].split(' ')[0]
let minute = input[0].split(' ')[1]
let cookTime = input[1]
solution(+hour, +minute, +cookTime)
function solution(doneHour, doneMin, cookTime) {
doneMin += cookTime
while(doneMin >= 60) {
doneMin -= 60
doneHour += 1
}
doneHour %= 24;
console.log(doneHour, doneMin)
}
})