[백준 2869] 달팽이는 올라가고 싶다
2023. 4. 3. 01:29ㆍ자료구조 및 알고리즘/백준
728x90
이 코드의 문제점
2^23승까지 하고 멈춘다.
#include <iostream>
using namespace std;
int main(void){
int a,b,v;
cin>>a>>b>>v;
int len=0;
// 반올림 써야하나
float day=1;
while(len<v){
len+=a;
day+=0.5;
if(len>=v){
cout<<(int)day;
return 0;
}
len-=b;
day+=0.5;
}
}
어디서 자료형의 범위가 부족했는지 모르겠지만 long long과 double로 대체해준다.
#include <iostream>
using namespace std;
int main(void){
ios::sync_with_stdio(0);
cin.tie(0);
long long a,b,v;
cin>>a>>b>>v;
long long len=0;
double day=1;
while(len<v){
len+=a;
day+=0.5;
if(len>=v){
cout<<(long long)day;
return 0;
}
len-=b;
day+=0.5;
}
}
이거 cin.tie(0); 해도 시간 초과나서 바꿔준다.
다음 글 참고한다.
정답 코드는
#include <iostream>
using namespace std;
int main() {
int A, B, V;
int answer;
cin >> A >> B >> V;
//하루만에 올라갈 수 있을 때
if(V <= A) answer = 1;
else{
V -= A;
if(V % (A - B)) answer = V / (A - B) + 2;
else answer = V / (A - B) + 1;
}
cout << answer;
}
728x90
'자료구조 및 알고리즘 > 백준' 카테고리의 다른 글
[백준 9663] N-Queen (0) | 2023.04.06 |
---|---|
[백준 15649] N과 M (1) (0) | 2023.04.06 |
[백준 2752] 세수정렬 (0) | 2023.04.02 |
[백준 10817] 세 수 (0) | 2023.04.02 |
[백준 1929] 소수 구하기 (0) | 2023.04.01 |