(1).백준 12840번 창용이의 시계는 정답률이 30%도 되지 않는 문제였는데
확실히 처음에는 간단하다고 생각했지만 틀렸습니다가 나와서 상당히 당황했다.
기본적으로 주어진 시간을 초로 환산해 관리하고
시간의 추가의 경우 추가된 시간을 86400의 나머지를 현재 시간에 덮어씌우고
마이너스의 경우 86400을 더한 값에서 해당 시간을 빼고 86400의 나머지 값을 계산했었는데
오답이 나와서 조건을 다시 잘 읽어보니 초기 주어진 값만 정상 시간으로 주어지고
추가로 주어지는 값은 천만초까지 주어졌기 때문에 -1000만초 같은 연산 부분에서 에러가 발생한 것이었다.
문제의 원인이나 결과를 볼 수 없어서 디버그가 힘들긴 했지만
원인을 파악하고 바로 결과에서 먼저 86400 나머지처리를 한 다음 86400을 더하고 나머지처리를 해 문제를 해결했다.
const input = `0 1 0
4
1 4263
3
2 1175
3`.split('\n')
let [h, m, s] = input.shift().split(' ').map(Number)
let time = h*3600 + m*60 + s
const result = []
const getTime = (t) => {
const h = Math.floor(t / 3600)
const m = Math.floor((t % 3600)/60)
const s = t % 60
return h + ' ' + m + ' ' + s
}
for(let i = 1 ; i < input.length ; i++){
if(input[i][0] == '1'){
time = (time + Number(input[i].slice(2))) % 86400
}
else if(input[i][0] == '2'){
time = ((time - Number(input[i].slice(2))) % 86400 + 86400) % 86400
}
else if(input[i][0] == '3'){
result.push(getTime(time))
}
}
console.log(result.join('\n'))
'회고' 카테고리의 다른 글
[개발일지] - 231 (0) | 2024.02.16 |
---|---|
[개발일지] - 230 (0) | 2024.02.15 |
[개발일지] - 228(연차) (1) | 2024.02.13 |
[개발일지] - 227(설날 대체휴일) (1) | 2024.02.12 |
[개발일지] - 226(설날) (0) | 2024.02.11 |