단계별 문제풀이 중 정답률이 가장 적은 알람시계 문제이다
내가 정한 시간보다 45분 일찍 알람이 울려야되니깐
입력 시간보다 45분 전으로 나오게끔 출력이 나오면 되는 문제엿고,
const fs = require("fs");
const [h,m] = fs
.readFileSync("input.txt")
.toString()
.trim()
.split(" ")
.map(Number);
if(h>=1&&m<45) {
let resultA = h-1;
let resultB = m+15;
console.log(`${resultA} `+`${resultB}`)
}else if(h==0&&m>45){
let resultC = 23;
let resultD = m+15;
console.log(`${resultC} `+`${resultD}`)
}
우선 시간 말고 분에서 45분을 빼주는 형태보다는
먄약 시간이 바뀔꺼라면 그냥 시간에서 1을 빼주고 분에서는 45분뒤는 그냥 15분 더한것과
같은 값이라서 위 코드와 같이 작성을 하였다.
문제는 저렇게 하면 다음과 같은 오류가 발생하는데
첫번재 사진만 보면 문제없이 코드가 잘 돌아가는것을 보이지만
두번째 사진을 보면 0시 30분인 경우는 아예 찍히지도 않으며,
스터디 이후 알게 된 새로운 예시로
0시 50 분으로 해버리면 23시 65분이라는 말도 안되는 수치가 나오게 된다.
예외 처리 부분이 조금 부실하다고 생각되어서 우선 이부분을 먼저 고치기로 했다.
const fs = require("fs");
const [h,m] = fs
.readFileSync("input.txt")
.toString()
.trim()
.split(" ")
.map(Number);
if(h>0&&m<45) {
let resultA = h-1;
let resultB = m+15;
console.log(`${resultA} `+`${resultB}`)
}else if(h==0&&m<45){
let resultC = 23;
let resultD = m+15;
console.log(`${resultC} `+`${resultD}`)
}else if(h==0&&m>45){
let resultE = 23
let resultF = m-45
console.log(`${resultE} `+`${resultF}`)
}
스티디에서 나온 피드백대로 45분 보다 큰 상황에서의 예외처리도 완료해서 무사히 잘 실행되는것도 확인할 수 있었다.
추가로 같이 한 팀원의 코드중 좀더 짧은 내용을 말하자면
let input = require('fs') .readFileSync('dev.stdin').split(" ").map(Number);
let h = Number(input([0]));
let m = Number(input([1]));
if(m>=45){
m = m-45
}else{
h --
m = 60- (45-m)
if(h<0){
h=23
}
}
console.log(h + ' ' + m)
이러한 형태로 작성하면 더 깔끔하게 할 수 있다.
if else 문 안에서 if 문을 한번 더 사용하는거는 생각도 못했고, 변수 h m 을 미리 바깥에서 선언해놓으면 코드가 좀더 간결해질수 있다는것도 알게 된것 같다.