[도전 7일차] Codejam 2019 예선 (1)
2020. 4. 3. 22:58ㆍPS/도전
Codejam 2019 Qualification Round
문제 1: Foregone Solution
사용 알고리즘 :
문제 설명:
4가 포함된 자연수 N (ex) 14)을 4가 포함되지 않은 두 자연수 A,B로 쪼개는 문제다.
N은 T번 주어진다.
풀이:
대회 당시 Visible Testcase는 N < 10^9 였고 Hidden Testcase 는 N<10^100 이였다.
먼저 N<10^9 부터 접근해보자.
테스트케이스가 100개이므로 당연히 1~N까지 살펴보는 것은 TLE다.
그런데 곰곰히 생각해보면 아무렇게나 수를 분할하면 되므로 각 자리에 맞추어 수가 7~9가 아닌 경우에는 절반으로 쪼개고 7~9면 1과 나머지로 나누자.
ex) 145 --> 123 : 022
생각해보니 앞에 0이 오는 경우를 처리 안했는데, AC 받았다.
여담으로 나는 AC 받는데 20분 이상 걸렸는데, 실전에서는 생각을 다 끝내고 10분 내로 짜는게 중요하다.
코드
더보기
//pentagon@sasa.hs.kr
#include<bits/stdc++.h>
#define ll long long
#define vsort(v) sort(v.begin(),v.end());
const int INF = 1e9;
using namespace std;
int n,t;
void solve(){
string s,a,b;
s.clear(); a.clear(); b.clear();
cin>>s;
for(char x : s){
int t=x-'0';
if(t>=7&&t<=9)
a.push_back(t-1+'0'),b.push_back(1+'0');
else
a.push_back((t+1)/2+'0'),b.push_back(t/2+'0');
}
cout<<a<<' '<<b<<'\n';
}
int main(){
ios::sync_with_stdio(false); cin.tie(0);
cin>>t;
for(int i=1;i<=t;i++){
cout<<"Case #"<<i<<": ";
solve();
}
}
728x90
'PS > 도전' 카테고리의 다른 글
[도전 9일차] 2541 점 (0) | 2020.04.07 |
---|---|
[도전 8일차] 체인점 - KOI 고등부 2번 (0) | 2020.04.05 |
[도전 6일차] 채점 - KOI 고등부 풀이 (2) | 2020.04.03 |
[도전 5일차] 2453 부서 배치 (0) | 2020.04.02 |
[도전 4일차] 2488 줄다리기 (0) | 2020.04.01 |