[Programmers] 숫자 문자열과 영단어

Updated:

숫자 문자열과 영단어

숫자 문자열과 영단어 를 클릭하면 바로 이동한다.

문제를 보자마자 바로 생각나 풀이로 풀었는데 역시 한 수 위인 코드가 있다..

solution1은 solution2의 replace 메소드를 구현한 것이라고 생각하면 될 것 같다.

그런데.. 당연히 solution2의 풀이가 생각났어야 한다.


def solution1(s):
    result = ""
    idx = 0
    while idx < len(s):
        if '0' <= s[idx] <= '9':
            result += s[idx]
            idx += 1
            continue

        if s[idx] == 'z':
            result += '0'
            idx += 4
        elif s[idx] == 'o':
            result += '1'
            idx += 3
        elif s[idx] == 't':
            if s[idx + 1] == 'w':
                result += '2'
                idx += 3
            elif s[idx + 1] == 'h':
                result += '3'
                idx += 5
        elif s[idx] == 'f':
            if s[idx + 1] == 'o':
                result += '4'
            elif s[idx + 1] == 'i':
                result += '5'
            idx += 4
        elif s[idx] == 's':
            if s[idx + 1] == 'i':
                result += '6'
                idx += 3
            elif s[idx + 1] == 'e':
                result += '7'
                idx += 5
        elif s[idx] == 'e':
            result += '8'
            idx += 5
        elif s[idx] == 'n':
            result += '9'
            idx += 4

    return int(result)


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

    result = s
    for key, value in info_dict.items():
        result = result.replace(key, value)
    return result


if __name__ == "__main__":
    s = "one4seveneight"
		print(solution1(s))
    print(solution2(s))



Categories:

Updated:

Leave a comment