[알고리즘][프로그래머스][JAVA][Python]숫자 문자열과 영단어

문제설명

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

다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.

1478 → "one4seveneight"
234567 → "23four5six7"
10203 → "1zerotwozero3"

이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.

1. Java

class Solution {
    public int solution(String s) {
        int answer = 0;
        
        String[] str = {"zero","one", "two","three","four","five","six","seven","eight","nine"};
        String[] num = {"0","1","2","3","4","5","6","7","8","9"};
        
        for(int i = 0; i<str.length; i++){
            s = s.replace(str[i],num[i]);
        }
        answer = Integer.parseInt(s);
        
        return answer;
    }
}

코드설명

  1. 대응되는 숫자와 영단어를 배열로 선언

  2. for문을 통해 str안의 영단어가 주어진 문자열 s 내에 존재할 때 replace함수를 통하여 num안의 대응되는 숫자로 변환

  3. 변환된 객체는 여전히 문자열이기때문에 정수형으로 변환


테스트 결과


2. Python

def solution(s):
    answer = ''
    dic = {
        'zero' : '0',
        'one' : '1',
        'two' : '2',
        'three' : '3',
        'four' : '4',
        'five' : '5',
        'six' : '6',
        'seven' : '7',
        'eight' : '8',
        'nine' : '9'
    }
    
    answer = s

    for key, value in dic.items() :
        answer = answer.replace(key, value)
    
    return int(answer)

코드 설명

  1. 대응되는 영단어와 숫자를 dictionary의 key값과 value값으로 선언

  2. 받은 문자열을 answer이라는 변수에 담기

  3. 우리가 필요한 것은 key와 value를 한꺼번에 for문을 반복시켜야 하므로 items()를 사용하여 반복

  4. answer안에 key값이 있으면 value인 숫자로 변환

  5. 아직 answer은 문자형이므로 숫자형으로 변환하여 반환

테스트 결과

좋은 웹페이지 즐겨찾기