본문 바로가기
코딩테스트/백준 알고리즘

백준 알고리즘 | 2869 : 달팽이는 올라가고 싶다 (Python / 파이썬)

by 함께 공부해요 2020. 9. 22.


달팽이는 올라가고 싶다 성공출처다국어분류

시간 제한

메모리 제한

제출

정답

맞은 사람

정답 비율

0.15 초 (추가 시간 없음)

128 MB

63369

15185

12859

26.076%

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

 

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

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

www.acmicpc.net


문제

땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다.

달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다.

달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오.

입력

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

출력

첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다.

알고리즘 분류

수학


백준 알고리즘 # 2869번 : 달팽이는 올라가고 싶다

조건 연산자(삼항 연산자)

- 조건에 따라 서로 다른 수식 수행 / if(?), else(:)

# 조건 수식 ? 수식1 : 수식2;

→ ‘조건 수식’이 (true, 1)이면 ‘수식1’ 수행, 거짓(false, 0)이면 ‘수식2’ 수행

# 시간초과한 코드
a, b, v = map(int, input().split())
day = 0

while 1:
    if a - b == v:
        print(day)
        break
    a += 2
    b += 1
    day += 1

# 통과한 코드
a, b, v = map(int, input().split())
day = (v - b) / (a - b)     // # (a * day) - (b * (day - 1)) >= v

print(int(day) if day == int(day) else int(day) + 1)

풀이 1 (시간초과)

위 코드 주석에 적힌 것처럼 처음 풀이한 코드는 시간초과가 떳다.. 그래도 풀이를 해보자면

달팽이가 낮에 올라가는 변수를 a, 밤에 자는 동안 미끄러지는 변수를 b

나무 막대의 정상 높이의 변수를 v로 설정하고 각각 정수로 입력받았다.

그리고 얼마 걸렸는지 셀 day 변수를 0으로 초기화 시켜놓으면 준비완료🙌

다음으로 while문으로 break가 나오기 전까지 반복을 해주고(아마 여기서 오래 걸려서 시간초과가 뜬 것 같다)

하루가 지날 때마다 변수 a는 2를 증가시키고, 변수 b는 1을 증가시켜서 이것을 뺀 수치가 5가 되었을 때

day를 출력해주면 시간초과한 코드 풀이 끝!

풀이 2 (통과)

이제 다음으로 시간초과가 나지 않은 코드를 보면 (헤매다가 결국 구글링한 결과😂)

시간초과한 코드와 마찬가지로 a, b, v 변수를 설정해서 각각 입력받고

day를 주석에 나온 것처럼 낮이 되서 a가 위로 정상에 올라갔을 때는 미끄러지지 않으니

b쪽에만 day - 1해준 것을 day만 빼고 다 넘겨서 정리하면

day = (v - b) / (a - b)

위와 같은 부등식이 된다.

이것을 파이썬식 삼항연산자를 이용해서 if에 해당하는 day == int(day)일 경우에

int(day)를 출력하면 4가 출려되면서 풀이 끄--읏!👏

(위와 같이 삼항연산자를 이용하지 않고, 그냥 바로 int(day)를 출력할 경우 틀린다.)

세한 코드가 궁금하신 분들은 아래 GitHub 참고해주세요🙏

 

wook2124/Algorithm

Practice algorithm. Contribute to wook2124/Algorithm development by creating an account on GitHub.

github.com

최종 소스코드

댓글