BOJ. 2869

Opusdeisong·2022년 12월 24일
0

백준 Class2

목록 보기
10/31

#BOJ2869

달팽이는 올라가고 싶다

실행시간을 보자마자 알았다... 이거 그냥 짜면 시간초과 무조건 나온다. 정답률을 보자마자 이거 내가 생각한 방식대로 만들면 화가 많이 나겠구나 생각이 들었다. 그래도 사람은 해보고 실수를 해야하지 않겠냐는 생각에 코드를 만들고 시원하게 시간 초과 걸렸다. 시간 초과 걸린 코드는 아래와 같다!

# include "iostream"
using namespace std;

int main(void){
   int A, B, V, day = 1, position = 0;
   cin >> A >> B >> V;
   while (true){
       position += A;
       if (position >= V){
           cout << day << endl;
           break;
       }
       position -= B;
       day ++;
   }
}


우선 구현으로 해결하였는데 이거 그냥 수학으로 나누라는 소리이다. 근데 수학으로 계산해버리면 엣지케이스가 생성되어서 안했던건데 아 문제가 참 사람을 귀찮게 한다. 수학적으로 새로 구현해 보겠다. 초기에 만든 코드에 꼼수를 얹어서 코드를 만들었었는데 역시나 실패했고, 그냥 단순하게 생각해보니 단순 나눗셈으로 구현이 가능했다. 그래서 만든 코드는 다음과 같다. 당연하게도 정답이었다^^

# include "iostream"
using namespace std;

int main(void){
    int A, B, V;
    cin >> A >> B >> V;
    V = V - A;
    if (V % (B - A) == 0) cout << V / (A - B) + 1<< endl;
    else cout << V / (A - B) + 2<< endl;
}
profile
Dorsum curvatum facit informaticum.

0개의 댓글