https://programmers.co.kr/learn/courses/30/lessons/17682
문자열에서 숫자를 골라내야 하는데, 이 때 10이 포함된 경우를 잘 확인해주면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #include <string> #include<iostream> #include<vector> using namespace std; bool isNum(char a) { return 0 <= a - '0' && a - '0' <= 10; } int solution(string dr) { vector<int> numV; vector<char> boV, opV(3, '!'); int ans = 0; string strNum = ""; for (int i = 0; i < dr.length(); i++) { if (isNum(dr[i])) strNum += dr[i]; else { if (strNum != "") { numV.push_back(stoi(strNum)); strNum = ""; } if (dr[i] == 'S' || dr[i] == 'D' || dr[i] == 'T') boV.push_back(dr[i]); else if (dr[i] == '*' || dr[i] == '#') opV[boV.size() - 1] = dr[i]; } } for (int i = 0; i < 3; i++) { if (boV[i] == 'D') numV[i] *= numV[i]; else if (boV[i] == 'T') numV[i] = numV[i] * numV[i] * numV[i]; if (opV[i] == '*') { if (i == 0) numV[i] *= 2; else { numV[i] *= 2; numV[i - 1] *= 2; } } else if (opV[i] == '#') numV[i] *= -1; } for (int i = 0; i < numV.size(); i++) ans += numV[i]; return ans; } | cs |
'알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
카카오 2017 블라인드 테스트 1차: 셔틀버스 (C++) (0) | 2019.08.25 |
---|---|
카카오 2017 블라인드 테스트 1차: 캐시 (C++) (0) | 2019.08.25 |
2017 카카오 블라인드 테스트 1차: 비밀지도 (C++) (0) | 2019.08.23 |
카카오 2018 블라인드 테스트: 무지의 먹방 라이브 C++ (0) | 2019.08.20 |
카카오 2018 블라인드 테스트: 길 찾기 게임 C++ (0) | 2019.08.20 |