본문 바로가기

Algorithm/BOJ

[BOJ] 23027 1번부터 문제의 상태가...? B2 (C++, regex)

반응형


 

23027번: 1번부터 문제의 상태가…?

큰일이다. 시험 문제를 본 쿠기는 1번부터 풀 수가 없다. 시험 시간 동안 할 일이 없었던 쿠기는 교수님께 편지를 쓰려고 한다. 작년 시험에서 교수님께 그동안 감사했다는 편지를 전하고 D+을 받

www.acmicpc.net

문제 이해

큰일이다. 시험 문제를 본 쿠기는 1번부터 풀 수가 없다. 시험 시간 동안 할 일이 없었던 쿠기는 교수님께 편지를 쓰려고 한다. 작년 시험에서 교수님께 그동안 감사했다는 편지를 전하고 D+을 받았던 기억이 있다. 그때 성적이 문제였는지, 편지가 문제였는지 궁금하여 이번에도 1번 문제의 답안 칸에 편지를 작성하려고 한다. 혹시나 하는 마음에 쿠기는 D+만은 피하고자 편지를 수정하려고 한다.

  1. 편지의 내용 S에 'A'가 있다면 S에 있는 'B', 'C', 'D', 'F'를 모두 'A'로 변경한다.
  2. 'A'가 없고 'B'가 있다면 S에 있는 'C', 'D', 'F'를 모두 'B'로 변경한다.
  3. 'A'와 'B'가 없고 'C'가 있다면 S에 있는 'D', 'F'를 모두 'C'로 변경한다.
  4. 'A', 'B'와 'C'가 모두 없다면 S에 있는 모든 문자를 'A'로 변경한다.

쿠기를 도와 편지를 수정하는 것을 도와주자.

아이디어

정규식을 활용하여 빠르게 문자열을 수정한다.

  • c++의 regex 라이브러리를 활용한다.
  • regex 참고 
 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

  • 알파벳을 int형 배열에 바로 담을 수 있도록
    각 자리별 문자에 'A'를 빼주어 A가 0이 될 수 있도록 한다.
int arr[26]={0};
for(int i=0;i<input.length();++i){
    char now = input.at(i);
    arr[now-'A']++;
}

 

코드
#include <iostream>
#include <regex>
#include <string>
using namespace std;
int main() {
    ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
    string input("");
    cin >> input;
    int arr[26]={0};
    for(int i=0;i<input.length();++i){
        char now = input.at(i);
        arr[now-'A']++;
    }
    regex rg;
    string change;
    if(arr[0]>=1){
        rg = "[BCDF]";
        change ="A";
    }else if(arr[1]>=1) {
        rg = "[CDF]";
        change ="B";
    }else if(arr[2]>=1){
        rg="[DF]";
        change ="C";
    }else{
        rg="[A-Z]";
        change ="A";
    }
    input = regex_replace(input, rg,change);
    cout << input;
}

 

 

 


 

Dev_cpdm

 

choppadontbiteme.tistory.com

 

반응형

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 17406 배열 돌리기 4 G4 (JAVA)  (0) 2022.03.09
[BOJ] 2468 안전 영역 S1 (C++)  (0) 2022.03.03
[BOJ] 11723 집합 S5 (C++)  (0) 2022.02.22
[BOJ] 17204 죽음의 게임 S3 (JAVA)  (0) 2022.02.22
[BOJ] 9663 N-Queen G5 (JAVA)  (0) 2022.02.22