[JS]백준 2525. 오븐시계

n-u·2022년 6월 15일
0

Algorithm

목록 보기
4/33
post-thumbnail

백준 2525 문제

https://www.acmicpc.net/problem/2525

제출한 풀이

const fs = require('fs');
let input = fs.readFileSync("./input.txt").toString().split(`\r\n`);
let hour = Number(input[0].split(' ')[0]);
let min = Number(input[0].split(' ')[1]);
let time = Number(input[1]);

if( min + time >= 60){
    hour += parseInt((min + time) / 60);
    min = (min + time) - 60;
}else{
    min = min + time;    
}

if(hour === 24) hour = 0;
if(min === 60) min = 0;

console.log(hour, min);

입력한 값과 제출되는 값은 동일하게 나오나, 오답으로 체크된다...
솔직히 정리되지 않은 코드이고, 코드가 어수선하다...ㅎ

제출한 풀이 2 - 정답~

solution( hour, min, time);

function solution(hour, min, time){
  min += time;
  if(min >= 60){
    hour += Math.floor(min / 60); 
    min %= 60;
  }
  if(hour > 23) hour -= 24;
  // 50시간인 경우도 생각했을때
  // 조건식을 hour === 24로 한다면 그 시간을 넘긴 시간은 제대로 계산이 안되기 때문에
  //조건식을 hour > 23로 변경
  
  console.log(hour, min);
}

구글에 검색한 결과들을 보고 함수로 조건문을 만들어 함수를 실행토록 코드를 만들었다.
그리고 if문의 연산들을 간결하게 하고, %연산자와 +=연산자를 활용해서 시간과 분의 값을 구하도록 했다.

문제를 풀면서 알게 된 것

  • 여러 연산자를 적극 활용해 볼것
  • 분(min)을 60으로 나누면 몫은 시간(hour)이 되지만, 나머지(%)는 남는 시간이 된다.
  • 함수로 만들어 문제를 해결하기
    다른 사람들의 코드를 봤을때 함수안에 if문을 적어 함수의 인자로 값들을 받는 형식의 코드를 작성해 문제를 푸는 것을 보고 다음 문제에는 이런식으로 써봐야 겠다고 생각했다.
  • 조건문을 사용할때 while문, 삼항연산자를 활용해보는 것을 고려해보자





참고

백준2525번 자바스크립트 풀이
[알고리즘] 백준 2525 오븐 시계 with node.js

profile
기록하며 발전하는 삶

0개의 댓글