KWPATTERN 문제 오답질문입니다. kun452 문제 테스트 케이스는 제대로 돌아가는데 오답으로 뜨네요.. 윤년은 일 만 관련있는데 성시가 되기 위해서는 일의 두개의 자리는 같은 것만 와야되므로 윤년은 생각하지 않았습니다. #include <iostream> #include <algorithm> #include <vector> #include <string> using namespace std; string A[10001]; string Func2(string a){ // a다음 것 if(a[4] == '0'){ if(a[5] == '1'){ if(a[6] == '1' && a[7] == '1'){ a[6] = '2'; a[7] = '2'; return a; } else if(a[6] == '2' && a[7] == '2'){ a[5] = '2'; a[6] = '1'; a[7] = '1'; a[8] = '2'; return a; } } else if(a[5] == '2'){ if(a[6] == '1' && a[7] == '1'){ a[6] = '2'; a[7] = '2'; return a; } else if(a[6] == '2' && a[7] == '2'){ a[4] = '1'; a[5] = '0'; a[6] = '1'; a[7] = '1'; a[8] = '0'; a[9] = '1'; } } } else if(a[4] == '1'){ if(a[5] == '0'){ if(a[6] == '1' && a[7] == '1'){ a[6] = '2'; a[7] = '2'; return a; } else if(a[6] == '2' && a[7] == '2'){ a[5] = '1'; a[6] = '1'; a[7] = '1'; a[8] = '1'; return a; } } else if(a[5] == '1'){ if(a[6] == '1' && a[7] == '1'){ a[6] = '2'; a[7] = '2'; return a; } else if(a[6] == '2' && a[7] == '2'){ a[5] = '2'; a[6] = '1'; a[7] = '1'; a[8] = '2'; return a; } } else if(a[5] == '2'){ if(a[6] == '1' && a[7] == '1'){ a[6] = '2'; a[7] = '2'; return a; } else if(a[6] == '2' && a[7] == '2'){ a[3] = a[3] + 1; a[4] = '0'; a[5] = '1'; a[6] = '1'; a[7] = '1'; a[8] = '1'; a[9] = '0'; a[10] = a[3]; } } } if(a[3] >= '6'){ a[2] = a[2] + 1; if(a[2] == 58){ a[2] = '0'; a[1] = a[1] + 1; if(a[1] == 58){ a[1] = '0'; a[0] = a[0] + 1; } } a[3] = '0'; a[10] = a[3]; a[11] = a[2]; a[12] = a[1]; a[13] = a[0]; } return a; } string Func(int n){ if(A[n] != ""){ //cout << " dfdf " << endl; return A[n]; } //cout << "Dfd " << endl; string a = ""; int i; for(i= n; i>0; i--){ if(A[i] != ""){ a = A[i]; break; } } int N = n - i; int j = i; for(i = 1; i<=N; i++){ //cout << a << endl; a = Func2(a); j++; A[j] = a; } return A[n]; } int main(){ int num; cin >> num; for(int i=0; i<10001; i++) A[i] = ""; A[1] = "20000111100002"; for(int i=0; i<num; i++){ int n; cin >> n; string k = Func(n); cout << k.substr(0, 4) << "-" << k.substr(4,2) << "-" << k.substr(6, 2) << " " << k.substr(8,2) << ":" << k.substr(10, 2) << ":" << k.substr(12) << endl; } return 0; } 10년 전
1개의 댓글이 있습니다. Being 이런 식으로 경우의 수를 일일이 나누어 구현하면, 질문해 주신 분도 그렇고 코드를 읽는 사람의 경우도 그렇고 로직을 전혀 파악할 수 없습니다. 꼭 이렇게 해야겠다고 하시면 말리지는 않겠습니다만 조금 더 일반적인 방법으로 해결하시기를 권합니다. 10년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
kun452
문제 테스트 케이스는 제대로 돌아가는데 오답으로 뜨네요..
윤년은 일 만 관련있는데 성시가 되기 위해서는 일의 두개의 자리는 같은 것만 와야되므로 윤년은 생각하지 않았습니다.
10년 전