본문 바로가기
코딩 테스트/Python_백준

[백준/Python] 2869번 달팽이는 올라가고 싶다 문제

by 모두의 케빈 2023. 4. 10.

■ 2869번 달팽이는 올라가고 싶다 문제

 

출처: 백준 2869번 달팽이는 올라가고 싶다 문

 

 

■ 코드 풀이

 

이 문제의 핵심은 시간제한입니다. 시간제한이 0.25초로 굉장히 짧은 편인데, 올라가야 하는 높이는 최대 천만이고 하루에 올라가는 높이는 최소 1입니다. 시간제한이 없다면 while문을 활용하여 많이들 푸셨을 텐데, 목표 높이가 최대이고 하루 올라가는 높이가 최소 수준이라면 최악의 경우 천만번의 반복문을 실행해야 합니다. 다시 말해 이 문제에서는 반복문을 사용하지 말라고 대놓고 말하고 있는 것입니다.

반복문을 사용하지 않고도 아이디어로 간단히 문제를 풀 수 있습니다. 우선 소요되는 일수를 day라는 변수로 선언합니다. 낮에는 올라가고 밤에는 미끄러지므로, 올라가야 하는 높이 V를 (올라가는 높이 A - 내려가는 높이 B)로 나눠주면 됩니다. 또한, 문제에서 정상에 올라가면 떨어지지 않는다고 했으므로 낮에 다 올라가는 경우를 고려해 주기 위해 분자에는 V가 아니라 V-B를 해줍니다.

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


day = (V-B)/(A-B)
print(int(day) if day == int(day) else int(day) +1)

 

참고로 print문에 사용한 것은 삼항 연산자입니다. 삼항 연산자에 대해 잘 설명해 놓은 링크를 아래에 첨부하니, 공부가 필요하신 분들께서는 참고하시면 도움이 될 것 같습니다.

 

https://blockdmask.tistory.com/551

 

[python] 파이썬 삼항 연산자 (if ~ else ~)

안녕하세요. BlockDMask입니다. 오늘은 파이썬에서 사용하는 삼항 연산자에 대해서 알아보겠습니다. 1. 파이썬에서의 삼항 연산자 2. 파이썬 삼항 연산자 예제 1. 삼항 연산자 (Ternary Operators) 1-1) 삼

blockdmask.tistory.com

 

댓글