[프로그래머스] 숫자 문자열과 영단어 (python3)

어니스키·2021년 8월 14일
0

Programmers (python3)

목록 보기
7/13
post-thumbnail

2021 카카오 채용연계형 인턴십

📝 문제

문제 설명

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

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

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

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

제한사항

  • 1 ≤ s의 길이 ≤ 50
  • s가 "zero" 또는 "0"으로 시작하는 경우는 주어지지 않습니다.
  • return 값이 1 이상 2,000,000,000 이하의 정수가 되는 올바른 입력만 s로 주어집니다.

💡 나의 풀이

def solution(s):
    answer = ""
    
    eng = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
    num = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
    
    l = ""
    for i in s:
        l += i
        if l in eng :
            answer += num[eng.index(l)]
            l = ""
        if l in num :
            answer += l
            l = ""

영문자와 숫자를 str 원소로 가지는 리스트를 각각 생성하고, 매개변수로 주어진 s를 한 글자씩 받아 리스트에 매치되는 원소가 있는지 찾아보는 방법이다. 이렇게 하다보니 변수 type을 맞추기 위해 숫자도 문자열로 입력해야 했다 힝 ㅜ

🔗 다른 사람의 풀이

1


num_dic = {"zero":"0", "one":"1", "two":"2", "three":"3", "four":"4", "five":"5", "six":"6", "seven":"7", "eight":"8", "nine":"9"}

def solution(s):
    answer = s
    for key, value in num_dic.items():
        answer = answer.replace(key, value)
    return int(answer)

딕셔너리를 활용하여 key에는 영문자, value에는 숫자를 넣는다. s에서 key에 해당하는 문자를 찾아 value로 바꿔준다. 오 신기,,,

2

def solution(s):
    words = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']

    for i in range(len(words)):
        s = s.replace(words[i], str(i))

    return int(s)

이것도 위에랑 비슷한데 딕셔너리를 활용하지 않고 리스트의 index 자체를 value로 활용했다. 간단한 코드👏

profile
코딩 왕초보. 고수가 될,

0개의 댓글

관련 채용 정보