에디의 우당탕탕 코딩공장

✨lv0_코딩테스트 입문_숨어있는 숫자의 덧셈(2)

by 인턴 에디

https://school.programmers.co.kr/learn/courses/30/lessons/120864

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

✔️ 유형 : STL(algorithm, string)

✔️ 문제 풀이: 

    뭔가 복잡하게 푼 것 같긴한데,, while 문 안에 find_if() 함수를 이용해, 문자인 iterator을 반환하여, 숫자 string들을 int로 answer에 더해준다.

⬇️코드 보기

더보기
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>

using namespace std;

int solution(string my_string) {
    int answer = 0;
    vector<char> vString(my_string.begin(), my_string.end());
    vector<string> vInt;
    // 문자를 기준으로 divide
    size_t pos = 0;
    vector<char>::iterator iter;

    while ((iter = find_if(vString.begin(), vString.end(), [=](char ch) { return ch < '0' || ch > '9'; })) != vString.end())
    {
        string str(vString.begin(), iter);

        if (isdigit(str))
            answer += stoi(str);

        vString.erase(vString.begin(), iter + 1);    
    }
    
    string str(vString.begin(), vString.end());

    if (isdigit(str))
        answer += stoi(str);

    return answer;
}

블로그의 정보

에디의 우당탕탕 코딩 공장

인턴 에디

활동하기