본문 바로가기
공부/백준

[백준] 2525번

by _음주토끼_ 2022. 6. 16.
 

2525번: 오븐 시계

첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)

www.acmicpc.net

 

현재 시각(a시 b분)과 요리하는데 오븐을 사용해야하는 시간(분 단위)이 주어지면,

현재부터 오븐을 사용하여 오븐 가동이 끝나는 시간을 구하는 문제였다.

단, 디지털 시계는 23시 다음 시로 0시가 된다.

우선 두 가지 경우로 나눴다.

필요한 시간 c를 더해서 59분까지면 다음 시로 넘어가지 않기 때문에 c만 더하고 그대로 출력한다.

만약 60분 이상이 되면, 그때부터는 시 단위도 올려줘야한다. c의 범위가 1000분까지였기 때문에

범위를 일일이 60분은 1시간, 120분은 2시간... 하고 나눠버리면 알고리즘이 오래 걸릴 것 같았다.

따라서 시간에 대해 몫의 값을 이용했다. 1시간은 60분이니 b와 c의 값을 더한 총 분 단위의 값을 60으로 나눈다.

그럼 올려야하는 숫자가 몫으로 나타나고, 그 값을 a에 더해준다.

이후 디지털시계가 24시 이후는 다시 0시로 변경된다는 것을 고려하여 조건문을 써준다.

a의 값이 23을 초과했을 경우 24를 빼서 디지털 시계 범위 내의 시간으로 만들어준다.

다음으로 고려할 값은 분이다. 처음에는 60분 이상 120분 이하일 경우를 따져 b=60-(b+c)로 두었으나,

그렇게 하면 정말로 범위를 세세하게 나눠야하기 때문에 더 효율적인 식을 고민했다.

간단하고 편리한 방법은 나머지를 이용하는 것이다.

시 값에 60으로 나눈 몫의 값을 더해줬다면, 분 값에는 60으로 나눈 나머지 값을 반환해준다.

이후 계산된 a와 b 값을 출력해준다.

계속 같은 변수로 하는 것이 헷갈린다면 답에 대한 변수를 따로 생성하는 것도 좋은 방법일 듯하다.

 

'공부 > 백준' 카테고리의 다른 글

[백준] 1518번  (0) 2022.11.10
[백준] 18258번  (0) 2022.10.22
[백준] 2581번  (0) 2022.06.16
[백준] 11866번  (0) 2022.06.16
[백준] 2805번  (0) 2022.06.16