구글검색에 Javascript 풀이가 없으면 무조건 올립니다.
https://www.acmicpc.net/problem/3029
//* 인풋 - 디폴트
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt';
const input = fs.readFileSync(filePath).toString().split('\n');
//* 인풋 - 커스텀, 함수 콜
const curTime = input[0];
const targetTime = input[1];
console.log(sol(curTime, targetTime));
//* 로직함수
function sol(curTime, targetTime) {
let curTimeSec = timeToSecond(curTime);
let targetTimeSec = timeToSecond(targetTime);
let answer = '';
if (curTimeSec < targetTimeSec) {
answer = secToTime(targetTimeSec - curTimeSec);
} else {
answer = secToTime(targetTimeSec + 86400 - curTimeSec);
}
return answer;
}
function timeToSecond(time) {
let hh = parseInt(time.slice(0, 2));
let mm = parseInt(time.slice(3, 5));
let ss = parseInt(time.slice(6, 8));
return (hh * 60 + mm) * 60 + ss;
}
function secToTime(sec) {
let hh = Math.floor(sec / 3600) + '';
let mm = Math.floor((sec % 3600) / 60) + '';
let ss = Math.floor((sec % 3600) % 60) + '';
return `${hh.padStart(2, '0')}:${mm.padStart(2, '0')}:${ss.padStart(2, '0')}`;
}
💡 더 깔끔하게 할 수 있겠지만.. 많은 문제를 접하는게 목표라 그냥 넘어갑니다.
많이 안 푼 문제, 마음에 쏙 드는 풀이가 없어 넘어갑니다.
문제를 끝까지 제대로 안 읽고 풀어서 "<=" 과 "<"의 차이 하나로 2번이나 "틀렸습니다."를 받았습니다. 문제를 끝까지 읽고 요구사항을 제대로 파악하는 연습을 해야겠습니다.
문제를 받아들었을 때, 요구 사항이 뭔지, 제한 조건이 무엇인지 먼저 적는 연습을 하면 좋을것 같습니다.