알고리즘/Java

[python] 달팽이는 올라가고 싶다(2869)

유리코딩 2021. 12. 26. 02:06
반응형

알고리즘

python 달팽이는 올라가고 싶다(2869)

 

1. 문제

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

 

 

 

2. 풀이

  • 값을 구하기 위해 올림을 해야하는데 올림을 할 때 math 모듈을 사용해야해서 미리 math를 import를 해준다
  • a-b를 통해 하루 올라간 거리 계산
  • v-b를 통해 마지막 날 낮에 도착했을 때 마지막날 밤에 내려오는 거리를 빼준다
  • 전체 이동할 거리를 하루 이동한 거리로 나누어 주고 올림을 해준다. 1.2일도 결국은 2일이 걸린 것이기 때문 
  • 이 문제는 시간이 짧기 때문에 for문을 사용하면 시간복잡도에 의해 시간초과에 걸린다.
import math  # math모듈 사용을 위한 import

a, b, v = map(int, input().split())

one_day = a - b  # 하루 올라간 길이 계산
total_v = v - b  # 마지막날 낮에 도착하면 밤에 내려오지 않기 때문에
total_day = math.ceil(total_v/one_day) # 전체 이동거리에서 하루 올라간 길이 나눠주기
print(total_day)

 

[새로 배운내용]

import math

## 올림
math.floor(3.14)    #결과는 3
math.floor(-3.14)   #결과는 -4

## 내림
math.floor(3.14)    #결과는 3
math.floor(-3.14)   #결과는 -4

## 다양한 내림
>>> math.trunc(-3.14)   #결과는 -3 /  trunc()함수는 내림을 하더라도 0으로 향함
>>> math.floor(-3.14)   #결과는 -4 / floor() 함수는 무조건 아래만 향해 내림
>>> int(-3.14)  #결과는 -3 / trunc()함수와 같음

## 반올림
round(3.1415)   #결과는 3 / 2번째 인자가 생략 되면 소수점 반올림
round(3.1415, 2)   #결과는 3.14 / 소수점 2째 자리에서 반올림
round(31.415, -1)   #결과는 30.0 / 2번재 인자에 마이너스 사용 가능

 

 

[느낀점]

수학적인 부분에서 어렵지 않아서 파이썬에서 올림하는 방법만 잘 알고 있으면 쉽게 풀 수 있었다.

반응형