#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int solution(string s)
{
for (int i = 0; i < s.size(); ++i)
{
if (s[i] == 'z')
s.replace(i, 4, "0");
if (s[i] == 'o')
s.replace(i, 3, "1");
if (s[i] == 'e')
s.replace(i, 5, "8");
if (s[i] == 'n')
s.replace(i, 4, "9");
if (s[i] == 't')
{
if (s[i+1] =='w')
s.replace(i, 3, "2");
else
s.replace(i, 5, "3");
}
if (s[i] == 'f')
{
if (s[i+1] == 'o')
s.replace(i, 4, "4");
else
s.replace(i, 4, "5");
}
if (s[i] == 's')
{
if (s[i+1] == 'i')
s.replace(i, 3, "6");
else
s.replace(i, 5, "7");
}
}
return stoi(s);
}
처음에는 하나하나 연결시켰더니... 시간 초과... 이런...
생각했던 대로 find로 하나하나 다 찾으려고 한 게 시간 초과를 나오게 만든 이유
글자 하나 찾기는 시간 좀 덜 걸리니 이렇게 하니 성공!
성공하고 나니까 문자열치환하는 더 간단한 게 있네
replace와 regex_replace
문자열.replace(시작 위치, 길이, 치환 문자열)
regex_replace(해당하는 문자열, regex(정규식), 치환 문자열) (#include <regex> 필요)
정규식 말고도 원하는 문자열 검색도 가능하네요
정규식
^x // '^'은 문자열의 시작을 표현하며, x문자로 시작됨을 의미
x$ // '$'은 문자열의 종료를 표현하며, x문자로 종료됨을 의미
.x // '.'은 개행 문자 \n을 제외한 다른 모든 문자를 의미
x+ // '+'은 1회 이상 반복을 의미, x문자가 1번 이상 반복됨을 의미 ({1,}과 동일)
x* // '*'은 0회 이상 반복을 의미, x문자가 0번 이상 반복됨을 의미 ({0,}과 동일)
x? // '?'은 0 or 1개 문자 매칭 의미, x문자가 존재할 수도 있고 안 할 수도 있다는 의미 ({0,1}과 동일)
x|y // '|'은 or를 표현, x 또는 y가 나온다는 의미
(x) // '()'은 그룹을 표현, 괄호로 묶인 패턴을 의미 ((abc){3}와 같이 사용해서 abcabcabc를 검출하는데 쓰임)
x{n} // '{}'은 반복을 의미, x가 n번 반복됨을 의미
x{n,} // '{,}'은 반복을 의미, x가 n번 이상 반복됨을 의미
x{n,m} // '{}'은 반복을 의미, x가 n번 이상 m번 이하로 반복됨을 의미
[xy] // '[]'은 x 또는 y를 찾는다는 의미, [a-z0-9]이면 알파벳 소문자 또는 숫자를 찾는다는 의미
[^xy] // '[^]'은 not을 의미, x 및 y를 제외하고 찾는다는 의미
[a-z] // '[-]'은 a ~ z 를 찾는다는 의미
\d // '\d'은 digit으로 숫자를 의미
\D // '\D'은 not digit으로 숫자를 제외하고 나머지 다른 문자를 의미
\s // '\s'은 space로 공백문자를 의미
\S // '\S'은 not space로 공백문자를 제외한 나머지 다른 문자를 의미
\t // '\t'은 tap을 의미
\w // '\w'은 알파벳 대문자,소문자와 숫자를 의미, [A-Za-z0-9]을 의미
\W // '\W'은 not \w, 즉 \w를 제외한 특수문자를 의미
(?:) // 캡쳐하지 않는 그룹 생성
정규식 예는 더 좋은 예제가 많으니 찾아보시는 것을 추천합니다
'오늘의 알고리즘' 카테고리의 다른 글
[C++]2018 KAKAO BLIND RECRUITMENT[1차] 추석 트래픽(프로그래머스 3레벨) (0) | 2022.01.25 |
---|---|
[C++]2019 KAKAO BLIND RECRUITMENT 오픈채팅방(프로그래머스 2레벨) (0) | 2022.01.24 |
[C++]2022 KAKAO BLIND RECRUITMENT 신고 결과 받기 (프로그래머스 1레벨) (0) | 2022.01.23 |
[C++]카카오프렌즈 컬러링북(프로그래머스 2레벨) (0) | 2022.01.21 |
[C++]2020 KAKAO BLIND RECRUITMENT 문자열 압축(프로그래머스 2레벨) (0) | 2022.01.21 |