프로그래머스_C#/Level_1

[프로그래머스 C#] 숫자 문자열과 영단어

최애뎡 2021. 9. 9. 00:10
728x90
반응형

https://programmers.co.kr/learn/courses/30/lessons/81301

 

코딩테스트 연습 - 숫자 문자열과 영단어

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자

programmers.co.kr

using System;

public class Solution {
    string Change(string num)
    {
        if (num == "zero") return "0";
        if (num == "one") return "1";
        if (num == "two") return "2";
        if (num == "three") return "3";
        if (num == "four") return "4";
        if (num == "five") return "5";
        if (num == "six") return "6";
        if (num == "seven") return "7";
        if (num == "eight") return "8";
        if (num == "nine") return "9";
        return null;
    }
    
    public int solution(string s) {
        int answer = 0;
        
        string _tempNum = "";
        string _tempStr = "";
        for (int i = -1; ++i < s.Length;)
        {                        
            if (int.TryParse(s[i].ToString(), out int temp)) _tempNum += s[i];                              
            else _tempStr += s[i];                    
            
            if (_tempStr != "")
                if (Change(_tempStr) != null)
                {
                    _tempNum += Change(_tempStr);
                    _tempStr = "";
                } 
        }
        
        answer = Convert.ToInt32(_tempNum);
        return answer;
    }
}

문자열 반환 미리 만들어 두고

int로 변환 가능하면 바로 넣어주고 아니면 임시 문자열에 추가

그 뒤 문자열 검사하고 반환값이 null이 아니면 값을 반환받은 거니까 임시 문자열 비워주고

반응형