출처: 백준 온라인 저지
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)
}
})
'알고리즘' 카테고리의 다른 글
백준 온라인저지 100% 활용하기 ( vscode에서 nodejs 디버깅 모드 사용) (1) | 2022.05.02 |
---|---|
백준 JS | 1110번 더하기 사이클 (0) | 2022.04.26 |
Algorithm | String형 인자에서 중복되지 않는 가장 긴 단어의 길이 반환하기-CodeKata3 (0) | 2022.01.18 |
Algorithm | Brackets 유효성 로직 구현 (0) | 2022.01.17 |
알고리즘 | 더 해서 특정 수 나오는 배열 요소 찾기 (codeKata day1) (0) | 2022.01.11 |