https://www.acmicpc.net/problem/2525
2525번: 오븐 시계
첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)
www.acmicpc.net
1. 내 풀이
const fs = require('fs');
const data = fs.readFileSync('dev/stdin').toString().split('\n');
const start = data[0].split(' ').map(i => +i);
const startH = start[0];
const startM = start[1];
const durationH = Math.floor(+data[1]/60);
const durationM = +data[1]%60;
let endH;
let endM;
endH = startH + durationH;
if(startM+durationM>=60){
endH++;
endM = startM+durationM-60;
} else if(startM+durationM<60){
endM = startM+durationM;
}
if(endH>=24){
endH -= 24;
}
console.log(endH, endM)
2. hyo**** 님 풀이
var fs = require('fs');
const input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
let a = parseInt(input[0].split(' ')[0]);
let b = parseInt(input[0].split(' ')[1]);
let c = parseInt(input[1]);
h = Math.floor((a * 60 + b + c) / 60);
m = (a * 60 + b + c) % 60;
if(h>=24) {
h -= 24;
}
console.log(h, m)
- 코드가 훨씬 간결하고 조건문 사용도 적어 보기 훨씬 좋았다.
- 분과 시간을 따로 나눠서 생각한 나와 달리, 요리가 완성되는 시각의 변수(h)를 전부 분으로 바꿔서 접근한 부분이 놀라웠다.
3. ehg*** 님 풀이
let [current, cooktime] = require("fs").readFileSync(0).toString().split("\n");
let [h, m] = current.split(" ").map(Number);
m += parseInt(cooktime);
if(m >= 60) {
h += Math.floor(m/60);
m = m%60;
}
if(h >= 24) {
h = h%24;
}
console.log(h + " " + m)
- 입력값을 받을 때부터 변수에 값을 할당한 부분이 신기했다.
- 분을 다 더해서 60으로 나눈 나머지로 두고, 시간은 다 더한 분을 60으로 나눈 몫을 더한 값으로 두었다.
'기타 > 알고리즘(백준)' 카테고리의 다른 글
[JS] 백준 1110번 더하기 사이클 (0) | 2022.09.25 |
---|---|
[JS] 백준 2480 주사위 세개 (0) | 2022.09.21 |
[자바스크립트] 백준 10172번 '개' (0) | 2022.01.14 |
[자바스크립트] 백준 10701번 고양이 (1) | 2022.01.14 |
[자바스크립트] 백준 2557번 We love kriii (0) | 2022.01.13 |