
처음에 아무생각 없이 while 반복문으로 작성한 코드다.
올라가는 데 걸린 날짜가 정상적으로 출력되긴 하지만 입력된 숫자가 커지면 시간이 초과된다.
#include <iostream>
using namespace std;
int main(void) {
int V, A, B; //높이, 낮+, 밤-
int record = 0; //현재 높이(기록)
int day = 0; //소요일
cin >> A >> B >> V;
while (record < V)
{
record += A;
if (record < V)
{
record -= B;
}
day++;
}
cout << day;
}
#include <iostream>
using namespace std;
int main(void) {
int V, A, B; //높이, 낮+, 밤-
int day = 0; //소요일
cin >> A >> B >> V;
if ((V - A) % (A - B) == 0)
day = (V - A)/(A - B);
else
day = (V - A)/(A - B) + 1;
cout << day + 1;
}
풀이2를 더 간결하게 고쳐봤다.
#include <iostream>
using namespace std;
int main(void) {
int V, A, B; //높이, 낮+, 밤-
int day = 0; //소요일
cin >> A >> B >> V;
day=((V - A) % (A - B)) == 0 ? (V-A)/(A-B) : (V-A)/(A-B)+1;
cout << day + 1;
}