알고리즘/알고리즘문풀

2021 카카오 채용연계형 인턴십 - 숫자 문자열과 영단어(python)

developer-ellen 2021. 7. 20. 19:29

❓ 문제 - 2021 카카오 코딩테스트 숫자 문자열과 영단어 문제 - python 풀이법

출처 

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

 

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

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

programmers.co.kr

 

 

 

📝 문제해결법

 

1. 문제 해결의 핵심은 간단한 문자열 처리 문제로 파이썬을 사용하면 간단하게 처리할 수 있다.

 

2. 처음에 number라는  "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 값들의 원소로 갖는 리스트를 선언한다.

 

3. 문제 해결 흐름

  • 처음에 s에서 문자 하나씩을 for문을 돌려가면서 확인한다.
  • s문자가 숫자이면 -> isdigit()를 사용하면 숫자인지 확인이 가능 , answer에 값을 넣어준다.
  • s문자가 숫자가 아니라면 word에 하나씩 문자를 넣어준다.
  • 또한 word가 number 리스트에 있는 원소 중 하나와 같다면 answer에 number 리스트의 해당 값과 같은 인덱스를 넣어줌 -> 해당 리스트 원소의 숫자 영단어들의 인덱스는 해당 정수 숫자값과 같기 때문이다.  
  • 또한, word 값을 다시 ''으로 바꿔준다.
  • 마지막에 answer은 string 이므로 정답에 맞게 int 값으로 형변환을 시켜 답을 반환한다.

 

 

💻 소스코드 

number = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]


def solution(s):
    answer = ''
    word = ''
    for i in s:
        if i.isdigit():
            answer += i
            continue
        else:
            word += i

            if word in number:
                answer += str(number.index(word))
                word = ''

    answer = int(answer)

    return answer