알고리즘 (JAVA)/프로그래머스 알고리즘

[코테준비 - python] 숫자 문자열과 영단어 lever1 - 개발자 배찌

개발자 배찌 2022. 12. 7. 10:56
728x90

문법정리
문자열을 정수로 바꾸는방법
-> str(temp)
정수를 문자열로 바꾸는방법
-> int(temp)

딕셔너리를 이용한 선언
num = {1: 'test', 2:'test2' ...}

for문으로 꺼낼때 items() 기억하기!
for i in num.items() :
print(i)
#(1,'test')
#(2,'test2')

print(i[0], i[1])
# 1, test

문자열 바꿔치기
s.replace('바꿀문자열', ‘바뀔문자열’)


내가 푼 첫번째 문제풀이
>> 실패
딕셔너리로 풀려고 했다가, 뭔가 리스트(배열)로 될것같아서.. 했는데 코드가 복잡해지고,,
로직이 뭔가 이상했나보다 ㅇ_ㅇ

def solution(s):
    num = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
    answer = ''
    result = 0
    for i in range(len(num)) :
        if num[i] in s :
            s = s.replace(num[i],'')
            answer += str(i)
        if str(i) in s :
            s = s.replace(str(i),'')
            answer += str(i)
    result = int(answer)
    return result


내가 푼 두번째 문제풀이
>> 성공!!!
크..ㅇ ㅣ 짜릿함..
위에서 생각해보니 불필요한 코드가 들어가있었다
다 걷어내고 replace로 바꾸고,
코드를 간결하게 하기 위해 Dict로 바꿔서
for문에서 Items()로 꺼내는것 이용

def solution(s):
    answer = 0
    
    num = {0:'zero', 1:'one', 2:'two', 3:'three', 4:'four', 5:'five', 6:'six', 7:'seven', 8:'eight', 9:'nine'}
    
    for i in num.items() :
        s = s.replace(i[1], str(i[0]))
    answer = int(s)
    return answer