BOJ/백준-2869-python

cosmos·2021년 1월 22일
5
post-thumbnail
post-custom-banner

문제📖

풀이🙏

  • 첫번째 줄에 A,B,V를 공백을 기준으로 입력받는다.
    ->split()사용
  • 달팽이는 낮에 A만큼 올라가고 B만큼 내려온다 (정상 이상일 경우 X)
  • V가 목표
    -> while 반복문으로 a-b가 v보다 커질때까지 반복한다 if b가 정상이상일 경우엔 -b 적용 못하도록 set
    -> 시간 초과로인해 실패
    (반복문으로 돌리면 a-b를 max size 10000000000까지 계속 반복해야하므로 너무 비효율적이다)
    -> A + (A-B) * result >= V
    -> result >= (V-A)/(A-B)
    -> 형변환 고려 case1 = int(result) + 1, case2 = int(result) + 2

코드💻

시간 초과 코드

# boj, 2869 : 달팽이는 올라가고 싶다. python3
import sys

A, B, V = map(int,sys.stdin.readline().split())
day = 0
m = 0

while True:
    day += 1
    m += A
    if m >= V:
        print(day)
        break
    else:
        m -= B

수정 후 코드

import sys

A, B, V = map(int,sys.stdin.readline().split())

if (V-A)%(A-B) == 0:
    print(int((V-A)/(A-B))+1)
else:
    print(int((V-A)/(A-B))+2)

결과😎

출처📝

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

github

github

post-custom-banner

0개의 댓글