BOJ_2단계 2884번 알람시계

Daniel Lim·2021년 4월 29일
0

문제풀이

목록 보기
9/19
post-thumbnail

문제:

상근이가 알람 설정하고 자는데 맨날 알람 울려도 끄고 더 자려고 함.
그래서 창영이가 상근이를 위해 상근이가 설정한 시간보다 45분 일찍 울리는 알람시계를 생각함.
창영이의 구상대로 설정한 시간보다 45분 일찍 울리는 알람시계를 구하는 프로그램을 만들기



입력:

첫째줄에 2가지 숫자가 주어짐.



풀이과정:

const fs = require('fs');
const inputNumbers = fs.readFileSync('/dev/stdin').toString().split(' ').map(value=> +value);
let [Hour, Minute] = inputNumbers;

Minute -= 45;

if(Minute < 0) {
    Minute += 60;
    Hour--;

    if(Hour === -1) {
        Hour = 23;
    }
}

console.log(Hour + ' ' + Minute);


readline으로 작성

const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

let input = [];

rl.on('line', function (line) {
  let input = line.split(' ');
    
    let [Hour, Minute] = input;
    
    Minute -= 45;

if(Minute < 0) {
    Minute += 60;
    Hour--;

    if(Hour === -1) {
        Hour = 23;
    }
}

console.log(Hour + ' ' + Minute);
    
}).on('close', function () {
  process.exit();
});

Minute을 입력받으면 일단 45를 빼고 시작함.
0보다 작으면 60을 더해주고 Hour를 1씩 빼줌.
Hour에서 1을 뺐는데 Hour가 -1이 되는 경우에는 23으로 출력하게 함.

로직은 맞다고 생각했는데 자꾸 런타임 에러가 났다.
알고보니 변수 선언할때 Hour와 Minute를 const로 선언한 것이 문제라는 것을 꺠달았다.

변수 선언 이후 Hour와 Minute는 계산과정을 통해 값이 변화되어야 하는데 const로 했기 때문에 에러가 발생했던 것이다.
let으로 수정해주니 잘 된다.



var, let, const에 간단히 정리를 해야겠다.

var에 대해

변수명과 값을 var로 선언을 하게 되면, 똑같은 변수명으로 다른 값으로 재할당이 가능하다.

var A = 1;
console.log(A);  // 출력시 1로 나옴.

var A = 2;
console.log(A);  // 위에 A를 1로 변수선언했지만 다시 2라고 재선언을 해서 출력시 2로 나옴.


let에 대해

let은 변수명 선언을 하면 같은 변수명으로 또 변수를 만들수는 없지만 값은 재할당이 가능하다.

let A = 12;
console.log(A);

let A = 13;  // 이렇게 2번 선언은 안된다. (에러남)

A = 13;    // 이렇게 값을 재 할당하고,
console.log(A);   // 출력하면 13이 출력된다.


const에 대해

let은 값을 재할당 하는게 가능했지만 const는 같은 변수명으로 재선언 불가, 값 재할당도 불가하다.

이 외에도 변수 유효범위(scope) 차이도 있지만 정리해서 따로 글을 올려야겠다.

profile
웹개발 잘하고 싶어요

0개의 댓글