코뮤니티의 코딩 챌린지 2일차. 달팽이가 나무를 올라가기 위해서는 며칠이 걸리는 지 계산하는 문제입니다.
문제 내용은 다음과 같습니다.
달팽이는 높이가 N인 나무를 올라가고자 한다.
달팽이는 낮에는 A미터를 올라갈 수 있지만, 밤에 휴식을 취하면서 B미터 미끄러져 내려온다.
달팽이가 나무 정상에 도달하기 위해선 며칠이 걸릴까요?
조건 1 : 첫번째 줄에 A, B, N이 공백으로 구분되어 주어집니다.
조건 2 : 정상에 도달하는게 불가능할 경우, -1을 출력하세요. 수열은 수학에서 아래의 점화식으로 정의되는 수열입니다.
제가 생각한 방법은 다음과 같습니다.

n 일차 낮일 때 달팽이가 올라간 나무의 높이는 nA - (n-1)B 미터이고, 이때 정상에 도달했다고 한다면
nA - (n-1)B >= N 일 때의 n을 구하면 답이 나오게 됩니다.
하지만, 올라가는 거리보다 밤에 미끄러지는 거리가 길다면 (A > B) 정상에 도달하는게 불가능하므로 제외해야 합니다.
이를 코드로 구현할 방법을 생각해봤습니다.
x = 0
a, b, n = map(int, input().split())
while True:
if a < b:
print("-1")
break
elif x * a - (x - 1) * b >= n:
print(x)
break
else:
x += 1
첫 번째 조건문에서 정상을 도달하지 못할 때를 확인하고,
두 번째 조건문에서 정상에 도달했을 때의 일 수 (x)를 출력하도록 했습니다.
세 번째 조건문에서는 정상에 도달할 때까지 x 에 1을 더해가는 방식으로 값을 구하도록 하였습니다.
테스트 결과값은 다음과 같습니다.


정해진 조건에 도달할 때까지 조건문을 계속 반복하는 구조이기 때문에,
시간이 오래 걸리는 코드라 썩 효율적인 코드는 아닌 것 같다는 생각이 들지만
아직 파이썬 실력이 부족해 더 공부가 필요한 것 같습니다...
'Coding > Python' 카테고리의 다른 글
[코드잇] 파이썬(python)으로 로또 시뮬레이션 구현하기 (0) | 2021.09.24 |
---|---|
[코뮤니티] 블랙잭 파이썬(python)으로 구하기 (추석맞이 코딩챌린지) (0) | 2021.09.20 |
[코뮤니티] 피보나치 수열 파이썬(python)으로 구하기 (추석맞이 코딩챌린지) (0) | 2021.09.18 |
[코드잇] 파이썬(python) 사용자 입력받기(input), 파일 읽고쓰기(with ~ open), strip, split (0) | 2021.09.16 |
[코드잇] 파이썬 (python) 모듈(import) 사용하기, standard library(math, random, datetime, os) 맛보기 (0) | 2021.09.14 |