[백준/파이썬] 15885번 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 15885번 문제
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
고장난 시계도 하루에 두 번은 맞는다는 말이 있다. 하지만 현욱은 이 말이 굉장히 잘못되었다고 생각한다. 왜냐하면, 고장났다는 말이 멈췄다 라는 말과 동의어가 아니기 때문에 시계가 고장나서 빠르게 가거나 느리게 가거나 혹은 거꾸로 가는 경우 하루에 두 번 보다 적게 맞을 수도, 많이 맞을 수도 있기 때문이다.
현욱의 집에는 고장난 시계가 굉장히 많아서, 이 시계들로 고장난 시계가 하루에 두 번 맞는다는 말이 틀렸음을 증명해보이려고 한다. 이를 위해서, 현욱은 고장난 시계와 정상적인 시계를 모두 12시 정각에 맞춰놓고 24시간 동안 두 시계가 정확히 같은 시,분,초를 몇 번이나 가리키는지 확인해보려고 한다. 하지만 24시간 내내 이걸 보고 있는 건 너무 힘든 일이라, 현욱은 당신에게 대신 횟수를 확인해달라고 부탁했다. 현욱을 도와 고장난 시계가 정상 시계와 비교해서 몇 배의 속도로 움직이는지가 주어졌을 때, 하루동안 정확한 시간을 몇 번 가리키는 지 횟수를 계산하는 프로그램을 작성해보자.
현욱은 아날로그 감성을 좋아하기 때문에, 디지털 시계는 사용하지 않는다. …
입력 요약
첫째 줄에 두 정수 a,b (-108 ≤ a ≤108, 1 ≤ b ≤ 108, a ≠ b)가 주어진다. 이는 현욱이 가진 고장난 시계의 초침이 1초에 a/b 초만큼 움직인다는 의미이다. a가 음수인 경우 시계가 거꾸로 도는 경우이다.
출력 요약
첫째 줄에 24시간동안 고장난 시계가 정상적인 시계와 완전히 동일한 시,분,초를 가리키는 횟수를 출력한다. 이때, 맨 처음 시작할 때 서로 일치하는 위치인 것은 횟수에서 제외하고, 정확히 만 24시간째에 일치하는 건 횟수에 포함한다.
코드
a, b = map(int, input().split())
print(int(abs(a/b-1)*2))
설명
핵심은 구현 관점에서 고장난 시계도 하루에 두 번은 맞는다는 말이 있다. 하지만 현욱은 이 말이 굉장히 잘못되었다고 생각한다. 왜냐하면, 고장났다는 말이 멈췄다 라는 말과 동의어가 아니기 때문에 시계가 고장나서 빠르게 가거나 느리게 가거나 혹은 거꾸로 가는 경우 하루에 두 번 보다 적게 맞 …를 만족하도록 로직을 구성하는 것입니다.
코드는 입력을 파싱한 뒤 조건 분기와 계산을 순서대로 수행하고, 문제에서 요구한 형식으로 결과를 출력합니다.
경계값과 예외 케이스도 함께 고려해 오답이 나기 쉬운 상황을 방지합니다.
댓글남기기