본문 바로가기
기타/알고리즘(백준)

[JS] 백준 2525번 오븐 시계

by ㅇㅇ우너자나나 2022. 9. 21.

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으로 나눈 몫을 더한 값으로 두었다.