3.1.1. 시간 초과 코드 ¶
#include <iostream>
#include <vector>
int main()
{
int TC;
std::cin>>TC;
for(int t=1;t<=TC;t++){
int n,k;
std::vector<int> dol,res;
std::cin>>n;
dol.push_back(0);
for(int i=0;i<n;i++){
int tem=0;
std::cin>>tem;
dol.push_back(tem);
}
std::cin>>k;
res.push_back(0);
for(int i=1;i<=n;i++){
res.push_back(-1);
for(int j=i-1;j>=0 && dol[i]-dol[j]<=k;j--)
if(res[i]==-1 || res[i]>res[j]+1) res[i]=res[j]+1;
}
std::cout<<"Case #"<<t<<std::endl<<res[n]<<std::endl;
}
return 0;
}
3.1.2. 통과 코드 ¶
#include <iostream>
#include <vector>
int main()
{
int TC;
std::cin>>TC;
for(int t=1;t<=TC;t++){
int n,k;
std::vector<int> dol,res;
std::cin>>n;
dol.push_back(0);
for(int i=0;i<n;i++){
int tem=0;
std::cin>>tem;
dol.push_back(tem);
}
std::cin>>k;
res.push_back(0);
int i=1,j=0;
for(;i<=n;i++){
res.push_back(-1);
for(;dol[i]-dol[j]>k;j++);
if(i==j) break;
res[i]=res[j]+1;
}
if(i==n+1) std::cout<<"Case #"<<t<<std::endl<<res[n]<<std::endl;
else std::cout<<"Case #"<<t<<std::endl<<-1<<std::endl;
}
return 0;
}










