https://codeforces.com/contest/1811/problem/A
Problem - A - Codeforces
codeforces.com
풀이 :
- n길이의 숫자가 주어지고, 숫자 digit(0~9)가 하나 주어진다.
- digit을 숫자의 한 부분에 삽입하여 이 숫자를 최댓값으로 만들어 출력해야 한다
- n의 최댓값이 200000이고, 계산하기 편하도록 숫자는 문자열로 입력받는다
- 최댓값으로 만들기 위해서는 digit을 digit보다 작은 값 바로 앞에 넣으면 된다
- 따라서, 문자열을 앞에서부터 하나씩 출력하면서 탐색하는데,
digit보다 작은 값이 나올 경우 digit을 먼저 출력하고 이어서 남은 문자열을 출력한다
- digit이 0이거나, digit과 같은 값으로 이루어진 문자열인 경우 제일 마지막에 출력한다
코드 :
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main(){
cin.tie(NULL);
ios::sync_with_stdio(false);
string s;
int n, digit, t;
bool check;
cin >> t;
while(t--){
check = true; //digit을 출력했는지 안 했는지 check
cin >> n >> digit >> s;
for(int i=0; i<n; i++){
if(s[i] < digit+'0' && check && digit != 0){ //digit보다 작은 값이고,
cout << digit; //출력이 된 적이 없으며, digit이 0이 아니라면 digit 출력
check = false; //출력했음을 표시
}
cout << s[i]; //하나씩 계속 출력
}
if(check){ //digit이 출력 된 적이 없다면
cout << digit; //마지막에 출력
}
cout << '\n';
}
}
'PS_Codeforce' 카테고리의 다른 글
2022_Dec_PS (0) | 2023.01.20 |
---|