(TIL) 20210816
2021. 8. 17. 00:04ㆍTIL(Today I learned)
반응형
📕Facts(한 것)
- 운동하기
- 클린 아키텍쳐 읽기
- 깃헙페이지로 포트폴리오 꾸미기
- 당근마켓 서버 인턴 지원하기
- 프로그래머스 문제풀기
📕Feeling(느낀 점)
프로그래머스에서 간단하게 '숫자 문자열과 영단어' 라는 문제를 풀었다. 간단해 보이고, 실제로 간단하게 풀 수 있는 방법이 있다.
하지만 이 문제에서 if-else문을 사용하는 순간 엄청난 코드 길이의 늪에 빠지게 되기 쉽상이다.
그래서 C++에서는 (물론 다른 언어도) regex, 정규표현식을 활용해서 쉽게 해결할 수 있다.
#include <string>
#include <vector>
#include <algorithm>
#include <regex>
using namespace std;
vector<string> numbers = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"};
int solution(string s) {
int answer = 0;
regex r;
for(int i = 0; i < numbers.size(); i++) {
r = numbers[i];
s = regex_replace(s, r, to_string(i));
}
answer = stoi(s);
return answer;
}
이것도 사실 좀 복잡한 편이고, "zero"를 "0", "one"을 "1" 등 다음과 같은 방법을 이용하면
본문 코드는 같은 코드 복붙 10번이면 끝난다.
📕여담
반응형
'TIL(Today I learned)' 카테고리의 다른 글
(TIL) 20210818 (0) | 2021.08.18 |
---|---|
(TIL) 20210817 (0) | 2021.08.17 |
(TIL) 20210815 (0) | 2021.08.15 |
(TIL) 20210814 (0) | 2021.08.14 |
(TIL) 20210813 (0) | 2021.08.13 |