본문 바로가기
Programmers/programmers

[프로그래머스]프로그래머스 영어가 싫어요 //

by 딸기뚜왈기 2023. 12. 8.

 

저는 이렇게 풀었습니다.

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

 

저한테 중요했던 부분은 

numbers = numbers.replace(num_al[i],str(i)) 

이 부분이었습니다.

새로운 변수로 담아주는 것.

 

문자열은 변경 불가능한(immutable) 자료형이다.

즉, 한 번 생성된 문자열은 수정할 수 없다.

replace 메서드는 문자열에서 특정 부분을 찾아 대체한 새로운 문자열을 반환한다.

그래서 numbers.replace(num_al[i], str(i))을 사용할 때, 이 부분을 새로운 문자열로 갱신하려면 그 결과를 다시 변수에 할당해야 한다.

즉, numbers = numbers.replace(num_al[i], str(i))는 새로운 문자열로 갱신된 결과를 numbers 변수에 저장하는 것이다.

만약 이 부분을 생략하면, 문자열은 변경되지 않고 그대로 남아있게 된다.

따라서 새로운 변수에 할당하여 변경된 문자열을 유지하는 것이 필요하다.

 

 

<참고>

 

[python] 파이썬 mutable, immutable 객체에 관해서

안녕하세요. BlockDMask입니다. 오늘은 파이썬에 있는 mutable 객체, immutable 객체에 대한 차이점에 대해서 알아보겠습니다. 1. 파이썬 mutable, immutable 설명 2. 파이썬 mutable, immutable 값이 변경될 때 에제

blockdmask.tistory.com

 

 

def solution(numbers):
    for num, eng in enumerate(["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]):
        numbers = numbers.replace(eng, str(num))
    return int(numbers)

 

이분은 enumerate가 index와 값을 같이 반환해주는 파이썬 내장함수를 이용했다.

굳이 dict를 생성하지 않아 간명한 느낌이 들었다.

 

 

def solution(numbers):
    dic = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
    i=0
    for word in dic:
        numbers = numbers.replace(word, str(i))
        i+=1
    return int(numbers)

반복문에서는 numbers 문자열에서 각 단어를 해당하는 숫자로 대체하고, 숫자를 나타내는 문자열로 변환한 후에

i를 증가시킵니다.