티스토리 뷰

https://www.acmicpc.net/problem/2869

import math

#A 달팽이가 낮에 올라가는 거리
#B 밤에 미끄러지는 거리
#V 높이가 V미터인 막대
A,B,V = map(int, input().split())

#하루에 A-B 만큼 올라감 +1은 마지막날을 의미함
# V-A만큼 올라가는데 필요한 일 수를 계산함
days = (V-A) // (A-B) +1
if (V-A) % (A-B) != 0: # 나머지가 있다면, 하루를 추가함
    days += 1
    
print(days)

 

만약 오류가 발생한다면,

try:
    # A 달팽이가 낮에 올라가는 거리
    # B 밤에 미끄러지는 거리
    # V 높이가 V미터인 막대
    A, B, V = map(int, input().split())

    # 하루에 A-B 만큼 올라감 +1은 마지막날을 의미함
    # V-A만큼 올라가는 데 필요한 일 수를 계산함
    days = (V - A) // (A - B) + 1
    if (V - A) % (A - B) != 0:
        days += 1
    
    print(days)

except ValueError:
    print("잘못된 입력입니다. 세 정수 A, B, V를 공백으로 구분하여 입력해 주세요.")

 

접근 방식:

  1. 첫 번째 날: 낮에 A 미터를 올라가지만, 밤에 B 미터 미끄러집니다. 첫 번째 날이 끝날 때는 실질적으로 A - B 미터만 올라가게 됩니다.
    • 하지만 V 미터에 도달하면 더 이상 미끄러지지 않기 때문에 마지막 날은 다르게 처리해야 합니다.
  2. 마지막 날: 달팽이가 V 미터에 도달할 때, 더 이상 미끄러지지 않기 때문에 마지막 날에는 밤에 미끄러지는 일이 없습니다. 즉, 마지막 날은 A 미터를 다 올라가면 V에 도달합니다.

계산 과정:

  • 목표는 V 미터를 올라가는데 필요한 일수를 구하는 것입니다.
    1. 첫 번째 날부터 V - A까지 올라가야 하는 거리입니다. 왜냐하면 마지막 날에는 달팽이가 A 미터를 올라가면 바로 정상에 도달하기 때문입니다.
    2. 그 나머지 거리는 하루에 A - B 미터씩 올라가게 됩니다.

어떻게 일수를 계산할까요?

  1. V - A만큼 올라가는 데 필요한 일수를 계산합니다. 하루에 A - B 미터씩 올라가므로, V - A를 (A - B)로 나누면, 얼마나 많은 "하루"가 필요한지 알 수 있습니다.
    • (V - A) // (A - B)는 실제로 올라가는 일수입니다.
  2. 그런데 (V - A)를 (A - B)로 나누었을 때, 나머지가 있을 수 있습니다. 예를 들어, (V - A)가 (A - B)로 나누어 떨어지지 않는다면, 나머지만큼 추가적인 하루가 더 필요합니다. 그래서 나머지가 있으면 하루를 더 추가해 줍니다.

식 설명:

  • (V - A) // (A - B)는 정상에 도달하기 전까지 걸리는 완전한 일수입니다.
  • 나머지가 있을 경우, 마지막 날에 올라간 A 미터가 정상에 도달하게 해 주므로, 그 나머지 부분을 처리하려면 하루를 더 추가해야 합니다.

따라서,

  • (V - A) // (A - B) + 1에서 +1은 마지막 날을 의미합니다.
  • 그 후, if (V - A) % (A - B) != 0: 조건문은 나머지가 있으면 하루를 더 추가하는 부분입니다.

예시로 설명:

예시 1: A = 2, B = 1, V = 5

  1. V - A = 5 - 2 = 3 (정상에 도달하기 전까지 올라야 할 거리)
  2. 하루에 A - B = 2 - 1 = 1 미터를 올라가니까, 3 // 1 = 3일이 필요합니다.
  3. 마지막 날에는 2미터를 올라가면 정상에 도달하므로, 이 3일 후 하루를 추가하여 4일이 걸립니다.

결과적으로 4일이 걸리는 이유는 첫날을 포함한 3일과 마지막 날 1일이 더해져서 4일이 되는 것입니다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함