Devlog
#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가 4라면 X가 4개 있음을 의미
        • A를 채움
        • count 0으로 리셋
      • 문자열이 끝나고 (입력 받은 문자열 중 온점 없이)
        • count가 2라면 X가 2개 있음을 의미
          • B를 채움
          • count 0으로 리셋
  • 위 과정이 끝나고도 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
profile

Devlog

@덩이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그