2018 년 전국 다 교 알고리즘 겨울방학 훈련소 연습 경기 (2 차 전) A 거품 뱉 기

문자열 처리 로 구 덩이 를 밟 았 습 니 다.
제목 설명 작은 물고기 가 거품 을 내 뿜 고 뚜뚜 튀 어 나온다.작은 물고 기 는 두 가지 거품 을 토한다. 큰 거품 'O', 작은 거품 'o'.두 개의 인접 한 작은 거품 은 하나의 큰 거품 으로 녹 고, 두 개의 인접 한 큰 거품 은 터 질 것 이다.(네, 잘못 보지 않 았 습 니 다. 작은 기포 와 큰 기포 가 변 하지 않 습 니 다. 그 이 유 는 저도 잘 모 르 겠 습 니 다.) 예 를 들 어 ooOOOOOOOOO 는 시간 이 지나 면 oO 가 됩 니 다.
입력 설명: 데이터 가 여러 그룹 으로 파일 이 끝 날 때 까지 처 리 됩 니 다.각 그룹 은 'O' 와 'o' 로 구 성 된 문자열 을 입력 합 니 다.
출력 설명: 각 그룹의 출력 은 한 줄 만 포함 하고, 한 줄 의 문자열 은 작은 물고기 가 뱉 은 거품 이 융합 된 후에 남 은 거품 을 나타 낸다.
예시 1 입력 ooOOOOOOO 출력 oO
왼쪽 에서 오른쪽으로 합병 하 는 것 을 설명 합 니 다.
비고: 100% 데이터 에 대해 문자열 의 길 이 는 100 을 초과 하지 않 습 니 다.
코드:
#include 
#include 
#include 
#include 
using namespace std;
char s[101];
void printS(char* s,int len){
    for(int i=0;iprintf("%c",s[i]);
    }
    printf("
"
); } int main(void){ while(scanf("%s",s)!=EOF){ for(int i=0;i<strlen(s);i++){ if(s[i]=='o'){ int j=i; while(s[j+1]=='x'){ j++; } if(s[j+1]=='o'){ s[i]='x'; s[j+1]='O'; i=-1; //printS(s,strlen(s)); continue; } } if(s[i]=='O'){ int j=i; while(s[j+1]=='x'){ j++; } if(s[j+1]=='O'){ s[i]='x'; s[j+1]='x'; i=-1; //printS(s,strlen(s)); continue; } } else{ continue; } } for(int i=0;i<strlen(s);i++){ if(s[i]!='x'){ printf("%c",s[i]); } } printf("
"
); } return 0; }

생각 은 거품 의 합병 과 폭발 에 따라 한 번 시 뮬 레이 션 하 는 것 입 니 다. 문자열 도 크 지 않 기 때 문 입 니 다. 그리고 합병 하거나 폭발 한 후에 남 은 구 덩이 는 x 문자 로 대체 합 니 다. 배열 을 이동 하지 않 아 도 됩 니 다. 그리고 매번 조작 이 발생 한 후에 i 리 셋 을 다시 한 번 옮 겨 다 닐 수 있 습 니 다. 여 기 는 처음부터 리 셋 하지 않 아 도 됩 니 다. 그리고 마지막 으로 구 덩이 를 말 할 수 있 습 니 다.O 와 0 이 아니 라 o 와 O... 나 는 왜 문 제 를 보 자마자 0 이 라 고 생각 하지...

좋은 웹페이지 즐겨찾기