숫자 문자열과 영단어

개발새발log·2021년 10월 7일
0

Programmers

목록 보기
7/35

이 문제 어디서 봤나 했더니 내가 2021 카카오 채용연계형 인턴십 코테를 봤었다ㅋㅋㅋㅋ 다만 그땐 C++로 풀었고 이번에 파이썬으로 처음 풀어보는 것..✨

접근 방식

한 문자씩 읽으면서:

  1. 그 글자가 숫자일 때 ➡️ 정답 숫자 스트링에 추가
  2. 그 글자가 문자일 때 ➡️ 임시 스트링에 저장해두고, 길이가 3 이상일 때 숫자 변환 함수 수행
    (제일 짧은 숫자 문자열은 세글자(one, two, ...)이기 때문)

최종 코드

#숫자 문자열->숫자 변환 함수
def getNum(s):
    num = {"zero" : 0, "one" : 1, "two" : 2, "three" : 3, "four" : 4, "five" : 5, "six" : 6, "seven" : 7, "eight" : 8, "nine" : 9}.get(s, -1)
    return num

def solution(s):
    number = ''
    tmp = ''
    for i in range(len(s)):
        if((ord(s[i]) >= 48)&(ord(s[i]) <= 57)): #s[i]가 숫자(0~9)라면
            number += s[i]
        else:    #문자라면
            tmp += s[i]

        if(len(tmp)>=3): 
            rs = getNum(tmp)
            if(rs > -1):
                number += str(rs)
                tmp = ''                

    return int(number)
  • ord(문자) : 아스티코드로 변환하기
    - 아스키코드->문자는 : chr(ascii)
profile
⚠️ 주인장의 머릿속을 닮아 두서 없음 주의 ⚠️

0개의 댓글