(TIL) 20210816

2021. 8. 17. 00:04TIL(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