#include <iostream>
#include <string>
using namespace std;
int main(){
int count = 0;
string str;
cin>>str;
for(int i=0; i<str.length(); i++){
count++;
if(str[i]=='.'){
count--;
if(count == 2){
for(int j=1; j<=2; j++)
str[i-j]='B';
count = 0;
}
}
else{
if(count == 4){
for(int j=0; j<4; j++)
str[i-j]='A';
count =0;
}
if(i==str.length()-1){
if(count == 2){
for(int j=1; j<=2; j++)
str[i-j]='B';
count=0;
}
}
}
}
if(str.find('X') != std::string::npos)
cout << -1 << endl;
else
cout << str << endl;
}
- 입력받은 문자열 길이만큼 count 증가
- 만약 입력받은 문자열 중 .(온점)이 있다면
- count 감소 (한칸 앞으로 이동)
- 이때 만약 count (한 칸 감소한 count)가 2라면 X가 2개 있음을 의미
- B를 채움
- count 0으로 리셋
- 이때 만약 count (한 칸 감소한 count)가 2라면 X가 2개 있음을 의미
- count 감소 (한칸 앞으로 이동)
- 만약 입력 받은 문자열 중 .(온점)이 없고
- count가 4라면 X가 4개 있음을 의미
- A를 채움
- count 0으로 리셋
- 문자열이 끝나고 (입력 받은 문자열 중 온점 없이)
- count가 2라면 X가 2개 있음을 의미
- B를 채움
- count 0으로 리셋
- count가 2라면 X가 2개 있음을 의미
- count가 4라면 X가 4개 있음을 의미
- 만약 입력받은 문자열 중 .(온점)이 있다면
- 위 과정이 끝나고도 X가 남아 있다면 (이는 문자열이 홀수인 상태) -1 출력
- X가 남아 있지 않다면 (A 또는 B로 재배치한) 문자열 출력
참고: std::string::npos
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=jaejun0201&logNo=50146312891
find()와 npos
string 클래스에 find()라는 메서드가 있다. #include <string> #include <iostream> using na...
blog.naver.com
'스터디 > 알고리즘' 카테고리의 다른 글
[백준 2979] 트럭 주차 (1) | 2022.05.10 |
---|---|
[알고리즘 강의] 이론편 (1) (0) | 2022.04.29 |
[백준 10866] 덱 (0) | 2022.02.11 |
[백준 2231] 분해합 (0) | 2022.02.11 |
[백준 19532] 수학은 비대면강의입니다 (0) | 2022.02.11 |