| 문제 설명 ❓
영어가 싫은 머쓱이는 영어로 표기되어 있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
| 제한 사항 ❌
- numbers는 소문자로만 구성되어 있습니다.
- numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.
- 1 ≤ numbers의 길이 ≤ 50
- "zero"는 numbers의 맨 앞에 올 수 없습니다.
| 입출력 예 💬
numbers | result |
"onetwothreefourfivesixseveneightnine" | 123456789 |
"onefourzerosixseven" | 14067 |
| 입출력 예 설명 💬
입출력 예 #1
- "onetwothreefourfivesixseveneightnine"를 숫자로 바꾼 123456789를 return 합니다.
입출력 예 #1
- "onefourzerosixseven"를 숫자로 바꾼 14067을 return 합니다.
| 풀이 🔥
⚠️ 한 번씩 읽어주세요 ⚠️
제 개인의 풀이 방법이며 틀린 풀이 방법 일수도, 더 나은 풀이법이 존재할 수도 있습니다!
전체 코드는 깃헙 링크 혹은 하단 접은 글을 펼쳐 확인가능하며, 복붙이 아닌 참고용 코드입니다
영어로 된 숫자 문자열은 일반적인 계산이나 비교가 어려우므로, 이를 숫자로 변환하는 것이 필요합니다.
이 문제는 문자열 배열 numbers가 주어지고, numToStr 배열에는 "zero", "one", "two" 등의 문자열(숫자)이 저장되어 있습니다. 각 numToStr의 문자열은 0부터 9까지의 숫자를 문자열로 배열에 추가해 둔 것입니다..
문자열 numbers에서 numToStr [i]와 일치하는 문자열이 있다면, 해당하는 i(인덱스)로 numbers 문자열을 치환합니다. 예를 들어, "onefourthree"라는 문자열이 주어졌을 때, 이를 "143"으로 변환합니다.
저는 이런 방법으로 해결을 했습니다. 다른 풀이 방법도 분명 있을 거 같다는 생각이 드는데 개인적으로는 가장 쉽게 생각해 낸 코드인 거 같습니다.
이 코드는 영어로 된 숫자 문자열을 처리하는 코드인 만큼 비슷한 상황에서 응용해서 쓰일 수도 있을 거 같습니다. 예를 들어, 숫자 게임이나 영어 단어를 활용한 문제를 푸는 게임에 사용해도 괜찮을 듯합니다.
[깃헙 / Github]
😻 댓글과 공감 한 번씩 감사드립니다 😻
| 전체 코드 🔎
using System;
public class Solution {
public long solution(string numbers) {
long answer = 0;
// 각 케이스를 문자열 배열로 생성
string[] numToStr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
// numToStr의 길이만큼 반복
for(int i =0 ; i<numToStr.Length; i++)
{
// numToStr[i]와 해당하는 문자열이 있으면 i로 치환
numbers = numbers.Replace(numToStr[i],i.ToString());
}
// 결과값 (string)을 long 타입으로 변환
answer = long.Parse(numbers);
return answer;
}
}