Coolog 🖥️

/

[Coding Test] 숫자 문자열과 영단어 ⭐


🐳2021 카카오 채용연계형 인턴십 숫자 문자열과 영단어 ⭐ 코딩 테스트 문제를 풀고 정리한 글입니다 🐳

💫 문제 설명

매개변수

  • s : 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열
    • 1 ≤ s의 길이 ≤ 50
    • s가 “zero” 또는 “0”으로 시작하는 경우는 주어지지 않습니다.
    • return 값이 1 이상 2,000,000,000 이하의 정수가 되는 올바른 입력만 s로 주어집니다.
숫자 영단어
0 zero
1 one
2 two
3 three
4 four
5 five
6 six
7 seven
8 eight
9 nine

s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성


s result
"one4seveneight" 1478
"23four5six7" 234567
"2three45sixseven" 234567
"123" 123

숫자의 일부 자릿수를 영단어로 바꾸는 예시

  • 1478 → “one4seveneight”
  • 234567 → “23four5six7”

💫 코드

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

    for i in range(10):
        if str(i) in s:
            for j in range(s.count(str(i))):
                arr.append([s.find(str(i)), str(i)])
                s = s.replace(str(i), 'X', 1)
        if dic[i] in s:
            for j in range(s.count(dic[i])):
                arr.append([s.find(dic[i]), str(i)])
                s = s[:s.find(dic[i])] + "X" * len(dic[i]) + s[s.find(dic[i]) + len(dic[i]):]

    arr.sort(key=lambda x:x[0])
    a, b = zip(*arr)

    return int(''.join(b))

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

최근 게시물