- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- firebase google
- C언어
- 정렬
- 코딩테스트
- 안드로이드 스튜디오
- til
- 동적할당
- 프로그래머스
- 공유대학
- oauth
- 컴퓨터공학과
- 파이썬
- 자바
- 자료구조
- C++
- Firebase
- 프로그래밍 입문
- python
- 안드로이드
- 로그인
- 배열
- 비주얼 베이직
- 알고리즘
- 백준
- 연결리스트
- sql
- android studio
- Java
- 구글 로그인
Archives
코딩하는 해달이
[level 1 C++] 숫자 문자열과 영단어 본문
문제 설명
네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.
다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
- 1478 → "one4seveneight"
- 234567 → "23four5six7"
- 10203 → "1zerotwozero3"
이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.
참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다.
제한 조건
- 1 ≤ s의 길이 ≤ 50
- s가 "zero" 또는 "0"으로 시작하는 경우는 주어지지 않습니다.
- return 값이 1 이상 2,000,000,000 이하의 정수가 되는 올바른 입력만 s로 주어집니다.
문제 이해
영단어를 전부 숫자로 바꾸면되는 문제입니다.
영단어를 올바르게 쪼개는것을 잘 생각해서 문제를 풀어봅시다.
알고리즘
1. 문자열 s를 입력받는다.
2. 문자열의 x번째 문자가 알파벳인지 확인한다.
3. 만약 알파벳이라면 word문자열에 추가한다.
3-1. word문자열과 열거형의 영단어를 비교한다.
3-2. 만약 word문자열과 열거형의 영단어가 같다면 그 영단어에 해당하는 숫자를 answer문자열에 추가한다.
3-3. 그렇지 않다면 2번으로 돌아간다.
4. 그렇지 않다면 answer문자열에 추가한다.
5. answer문자열을 정수형으로 변환한다.
풀이코드
#include <string>
#include <vector>
using namespace std;
static const char* Number_str[] = {
"zero",
"one",
"two",
"three",
"four",
"five",
"six",
"seven",
"eight",
"nine"
};
string getStringForEnum(int num) { //열거형 -> 문자열 변환
string tmp(Number_str[num]);
return tmp;
}
int solution(string s) {
int answer = 0;
string word = "";
string numword = "";
string answers = "";
for (int i = 0; i < s.length(); i++) {
if (isalpha(s[i]) > 0) {
word.push_back(s[i]);
for (int i = 0; i != 10; i++) {
if (word == getStringForEnum(i)) {
string num = to_string(i);
answers += num;
word = "";
}
}
}
else {
answers.push_back(s[i]);
}
}
answer = stoi(answers);
return answer;
}
https://school.programmers.co.kr/learn/courses/30/lessons/81301
반응형
'개인 공부 > 프로그래머스' 카테고리의 다른 글
[Java/Kotlin] Lv1. 랜덤 닉네임 생성 (0) | 2024.08.06 |
---|---|
[level 2 Java] N개의 최소공배수 (0) | 2023.03.09 |
[level 1 C++] 키패드 누르기 (0) | 2022.08.15 |
[level 1 C++] 크레인 인형뽑기 게임 (0) | 2022.08.15 |
[level 1 C++] 없는 숫자 더하기 (0) | 2022.08.12 |
Comments