문제는 아래와 같습니다.

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

 

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

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

programmers.co.kr

풀이

 

def solution(s):
    kk={}
    kk_sorted=[]
    string=['zero','one','two','three','four','five','six','seven','eight','nine']
    import re
    for aa in range(len(string)):
        for i in [m.start() for m in re.finditer(string[aa], s)]:
            kk[i]=aa
        for j in [m.start() for m in re.finditer(str(aa), s)]:
            kk[j]=aa
    for i in sorted(kk.items()):
        kk_sorted.append(str(i[1]))
    return int(''.join(kk_sorted))

 

1단계. string에 해당하는 문자열의 위치를 찾고 딕셔너리 형태로 변환합니다.

Ex) {3: 'one'} : 세번째 위치에 one이 있다.

2단계. number에 해당하는 문자열의 위치를 찾고 딕셔너리 형태로 변환합니다.

Ex) {4: 1} : 네번째 위치에 1이 있다.

3단계. 위치 기준으로 딕셔너리를 정렬합니다.

4단계. 정렬한 딕셔너리의 값을 합쳐서 숫자로 반환합니다.

+ Recent posts