본문 바로가기

알고리즘

백준 2869 달팽이는 올라가고 싶다

728x90

백준 2869 달팽이는 올라가고 싶다

 

문제

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

 

2869번: 달팽이는 올라가고 싶다

첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)

www.acmicpc.net

 

풀이

처음 이 문제의 식을 이해하는데 많이 시간이 소요됐다.

이 문제의 핵심은 낮과 밤!

하루를 넘어가는 기준을 잘 생각해봐야 한다.

 

1일 최대 갈 수 있는 거리 : 낮 이동 거리

2일 최대 갈 수 있는 거리 : 낮 이동거리 - 밤 이동거리 + 낮 이동거리

3일 최대 갈 수 있는 거리 : 낮 이동거리 - 밤 이동거리 + 낮 이동거리 - 밤 이동거리 + 낮 이동거리

 

이제 조금 규칙이 보이는가?

 

이때, (V-B)/(A-B) 값이 2.25일이 나왔다.

근데 2.25일이라는 표현을 쓰지 않는다.

2일하고도 6시간이 걸렸다면, 3일 걸린거라 봐야 한다.

그래서 소수점이 있을 경우, 하루 더한 값을 반환해야 한다.

 

나의 풀이

import sys
input = sys.stdin.readline

A, B, V = map(int, input().split())

# A, B, V = 5,1,6

day = (V - B)/(A - B)

if day % 1 == 0.0:
    print(int(day))
else:
    print(int(day+1))

'알고리즘' 카테고리의 다른 글

프로그래머스, 정수를 나선형으로 배치하기  (0) 2023.07.31
백준 2447번 별찍기 - 10  (0) 2023.07.31
프로그래머스, 예산  (0) 2023.07.14
백준 8983 사냥꾼  (0) 2023.07.12
[Hash Table] 백준 10816 숫자 카드 2  (0) 2023.06.11