저는 이렇게 풀었습니다.
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를 증가시킵니다.
'Programmers > programmers' 카테고리의 다른 글
[프로그래머스]함수 두개 사용하기. (0) | 2023.12.10 |
---|---|
[프로그래머스]배열만들기 6 파이썬 // return a or b (0) | 2023.12.10 |
[프로그래머스]문제를 잘 읽자 (0) | 2023.12.08 |
[프로그래머스]프로그래머스 문자열 계산하기(파이썬)//replace, split (3) | 2023.12.08 |
[프로그래머스] 프로그래머스 소인수분해 // while, set, sort정렬 (2) | 2023.12.06 |