티스토리 뷰
성공 코드(내 코드)
- 각각의 숫자에 해당하는 문자열을 찾아 숫자로 바꿔준다.
- 문자열을 치환해주는 함수 replace
- 문자열.replace(시작 위치, 길이, 치환 문자열)
- 시작 위치부터 지정한 길이만큼 문자열을 치환 문자로 변환
- 범위 안에 원하는 값을 찾는 함수 find
- 문자열.find(검색 문자열)
- 문자열 앞에서부터 검색을 시작해 검색 문자열이 시작되는 위치를 반환
- 검색 문자열을 찾지 못한 경우 string::npos(429467295) 반환
- 숫자 타입의 데이터를 안전하게 스트링 타입으로 변경하도록 하는 함수 to_strong
- to_string(숫자)
- string 타입의 문자열을 int형으로 바꾸는 함수
- stoi(int형 숫자)
#include <string>
#include <vector>
using namespace std;
int solution(string s) {
int answer = 0;
vector<string> numStr={"zero", "one", "two", "three", "four",
"five", "six", "seven", "eight", "nine"};
for(int i=0; i<numStr.size(); i++){
while(s.find(numStr[i])<s.size()){
s.replace(s.find(numStr[i]), numStr[i].size(), to_string(i));
}
}
answer=stoi(s);
return answer;
}
다른 사람 풀이
- 정규표현식을 사용
- 대상 문자열에서 문자열을 검색해 치환하기 위해 regex_replace를 이용
- regex_replace.(대상 문자열, regex(정규식), 치환 문자열)
#include <bits/stdc++.h>
using namespace std;
int solution(string s) {
s = regex_replace(s, regex("zero"), "0");
s = regex_replace(s, regex("one"), "1");
s = regex_replace(s, regex("two"), "2");
s = regex_replace(s, regex("three"), "3");
s = regex_replace(s, regex("four"), "4");
s = regex_replace(s, regex("five"), "5");
s = regex_replace(s, regex("six"), "6");
s = regex_replace(s, regex("seven"), "7");
s = regex_replace(s, regex("eight"), "8");
s = regex_replace(s, regex("nine"), "9");
return stoi(s);
}
'알고리즘' 카테고리의 다른 글
[프로그래머스/c++] 같은 숫자는 싫어 (0) | 2022.08.26 |
---|---|
[프로그래머스/c++] 신규 아이디 추천 (0) | 2022.08.24 |
[프로그래머스/c++] 키패드 누르기 (0) | 2022.08.24 |
[프로그래머스/c++] 크레인 인형뽑기 게임 (0) | 2022.08.24 |
[프로그래머스/c++] 소수 만들기 (0) | 2022.08.19 |