728x90
반응형
시간초과 코드
#include<iostream>
using namespace std;
int main(int argc, char** argv)
{
int test_case;
int T;
cin>>T;
for(test_case = 1; test_case <= T; ++test_case)
{
int s, e, m;
cin >> s >> e >> m;
int num = 1;
while(true){
if((num - s) % 365 == 0 && (num - e) % 24 == 0 && (num - m) % 29 == 0) break;
num++;
}
cout << "#" << test_case << " " << num << endl;
}
return 0;
}
num을 하나씩 증가시키며 비교하면 시간 초과가 발생한다.
수정한 코드
#include<iostream>
using namespace std;
int main(int argc, char** argv)
{
int test_case;
int T;
cin>>T;
for(test_case = 1; test_case <= T; ++test_case)
{
int s, e, m, k;
cin >> s >> e >> m;
for(k = s; ; k += 365){
if((k - e) % 24 == 0 && (k - m) % 29 == 0) break;
}
cout << "#" << test_case << " " << k << '\n';
}
return 0;
}
k = 365*x+s = 24*y+e = 29*m+m
x를 하나 증가시키는 것은 k를 365 증가시키는 것과 같으므로 k에 365를 더해가며 실행 시간을 줄였다.
728x90
반응형
'Algorithm > SWEA' 카테고리의 다른 글
[SWEA] 2948번 문자열 교집합 (C++) (0) | 2023.11.18 |
---|---|
[SWEA] 3233번 정삼각형 분할 놀이 (C++) (0) | 2023.11.18 |