숫자 문자열과 영단어 _ Lv.1

2022. 9. 5. 07:462022/Programmers_Kakao 기출

아침부터 dictionary로 입력한 numEng를 자꾸 tuple로 인식하는 바람에 성질 버릴뻔 했다 ^-^

결과적으로는 딕셔너리 끝네 나도 모르게 입력한 "," 쉼표 때문이었다. 

끝에 쉼표가 오는 경우 튜플 타입으로 인식한다는 블로그의 한 글을 읽고 깨달았다;;;

결과는 아래와 같다

def solution(s):
    numEng = {'zero' : '0', 'one' : '1', 'two' : '2', 'three' : '3', 'four' : '4', 'five' : '5', 'six' : '6', 'seven' : '7', 'eight' : '8', 'nine' : '9'}
    tmp_s = ""
    changed_s = s
    for s_split in list(s):
        try:
            int(s_split)
        except:
            tmp_s = tmp_s+s_split
            if tmp_s in numEng:
                changed_s = changed_s[:changed_s.find(tmp_s)] + numEng[tmp_s] + changed_s[changed_s.find(tmp_s)+len(tmp_s):]
                tmp_s = ""

    return int(changed_s)

그런데 다른 사람의 풀이를 보다보니... 초기에 내가 구상한 로직으로 짜니 더 간단해지는? 것을 보았다...

튜플 문제만 안났어도..간단하게 풀 수 있는 문제였는데 ㅠ.ㅠ

튜플의 경우 index로 위치만 알 수 있기 때문에 replace같은 함수 사용이 안되어서 아예 포기한 상태로 우회적으로 풀다보니 그랬던것 같다. (결과적으로는 튜플이 아닌 딕셔너리로 받아왔지만 ㅎㅎ)

 

간단한 코드는 아래와 같다.

def solution(s):
    numEng = {'zero' : '0', 'one' : '1', 'two' : '2', 'three' : '3', 'four' : '4', 'five' : '5', 'six' : '6', 'seven' : '7', 'eight' : '8', 'nine' : '9'}

    for key, item in numEng.items():
        s = s.replace(key, item)
    return int(s)

'2022 > Programmers_Kakao 기출' 카테고리의 다른 글

크레인 인형뽑기 게임 _ Lv.1  (0) 2022.09.09
성격 유형 검사하기 _ Lv.1  (0) 2022.09.06
키패드 누르기 _ Lv.1  (0) 2022.09.06
신규 아이디 추천 _ Lv.1  (0) 2022.09.04
신고결과받기 _ Lv.1  (0) 2022.09.04