https://school.programmers.co.kr/learn/courses/30/lessons/81301
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
난이도 : Lv. 1
문제
입출력 예제
코드
#include <string>
#include <vector>
#include <map>
using namespace std;
int solution(string s) {
int answer = 0;
map<string, int> numList;
numList["zero"] = 0;
numList["one"] = 1;
numList["two"] = 2;
numList["three"] = 3;
numList["four"] = 4;
numList["five"] = 5;
numList["six"] = 6;
numList["seven"] = 7;
numList["eight"] = 8;
numList["nine"] = 9;
for (pair<string, int> num : numList)
{
int pos = s.find(num.first);
while(pos != string::npos)
{
s.replace(pos, num.first.size(), to_string(num.second));
pos = s.find(num.first);
}
}
answer = stoi(s);
return answer;
}
풀이
- 맵 리스트를 통해 각 영단어와 숫자 밸류값을 저장
- 범위기반 for문을 사용해 모든 영단어를 string의 find함수를 이용해 검색하고,
찾아낸다면 해당 위치의 인덱스를 pos변수에 저장 - 같은 영단어가 여러번 나올 수도 있으니 find의 결과가 npos가 나올때 까지
while문을 이용해 반복 - string의 replace 함수를 이용해 pos위치의 문자열을 숫자 밸류값으로 바꾼다.
- 모든 영단어를 숫자 밸류값으로 바꾼 뒤, stoi함수를 사용해 int형으로 변환 후 결과 변수에 대입
'[게임 개발] 알고리즘 공부 > 프로그래머스' 카테고리의 다른 글
[C++] 체육복 (0) | 2023.10.15 |
---|---|
[C++] 완주하지 못한 선수 (0) | 2023.07.07 |
[C++] 2018 KAKAO BLIND RECRUITMENT[1차] 비밀지도 (0) | 2023.06.23 |
[C++] 가장 가까운 같은 글자 (0) | 2023.06.22 |
[C++] 2023 KAKAO BLIND RECRUITMENT개인정보 수집 유효기간 (0) | 2023.05.21 |