[Algorithm] 프로그래머스 | 숫자 문자열과 영단어

Yeooooooni·2022년 4월 13일
0

Alogorithm

목록 보기
1/4

문제 설명


  • 영단어와 숫자로 구성된 문자열을 모두 숫자로 바꾸는 문제
  • ex) "1foureight5seven" -> 14857

🎇 나의 solution


numStr=['zero', 'one','two','three','four','five',
        'six','seven','eight','nine']

def str2numStr(s):
    result=0
    for i in range(len(numStr)):
        if s == numStr[i]:
            result=i
            break
    return str(result)


def is_str_digit(str):
    if str in numStr:
        return True
    else:
        return False

    
def solution(str):
    answer = []
    temp = []
    for i  in range(len(str)):
        if str[i].isdigit():
            if i>0 and temp:
                target = ''.join(temp)
                answer.append(str2numStr(target))
                temp=[]
            answer.append(str[i])

        else :
            target = ''.join(temp)
            if is_str_digit(target):
                temp = []
                temp.append(str[i])
                answer.append(str2numStr(target))
            else:
                temp.append(str[i])

    if temp :
        target = str2numStr(''.join(temp))
        answer.append(target)
    return int(''.join(answer))
  • 문자 하나하나가 숫자를 나타내는지 확인해서 맞으면 숫자로 변환함

  • 문자와 숫자 쌍을 나타낸 딕셔너리를 기준으로 문자열을 치환하는 것이 핵심인데, 핵심을 놓친 것 같다..

    🔑 모범 답안
    def solution(str):
    	answer =''
       dic = {"zero":0, "one":1, "two":2, "three":3, "four":4,
       		  "five":5, "six":6, "seven":7, "eight":8, "nine":9}
       for key, value in dic:
       	answer = answer.replace(key,value)
       return answer

🔑 str.replace(old_word, new_word, count)


  • 문자열 내에 old_word와 일치하는 문자열를 new_word로 바꾼다.
  • 앞에서부터 count 만큼 (default 일치하는 단어 전부)
  • 단, 원본 문자열은 그대로, 새로운 문자열을 반환

🔑 'str' object is not callable


  • str이라는 변수를 정의한 후 str() 함수를 사용하려고 한 경우에 발생하는 에러
  • 예시

def xxx(str): # 매개변수도 str
	temp = str(1) # string 형변환 함수도 str
    ... 

0개의 댓글

관련 채용 정보