답:
1)내가 푼 방법
import re
array = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
array2 = ['0','1','2','3','4','5','6','7','8','9']
def solution(numbers):
for i in range(len(array)):
numbers = re.sub(array[i], array2[i], numbers)
return numbers
>> enumerate로 푼 것을 보고 추가
>> i 가 이미 0 1 2 3... index값을 가지고 있으므로 이런식으로 array2 없이 풀 수도 있다!
import re
array = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
def solution(numbers):
for i in range(len(array)):
numbers = re.sub(array[i], f'{i}', numbers)
return numbers
2) 팀원이 푼 방법
num = {'zero':'0', 'one':'1', 'two':'2', 'three':'3', 'four':'4', 'five':'5', 'six':'6', 'seven':'7', 'eight':'8', 'nine':'9'}
def solution2(numbers):
for k,v in num.items():
numbers = numbers.replace(k, v)
return int(numbers)
#print(solution2(numbers))
문제 분석 및 해석
문자열 numbers 정수
"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"
영어로 표기되어있는 숫자를 수로 바꾸는 문제
1) 내가 생각한 풀이
문자열 검사를 해서 같은 것을 찾으면 변환시켜주면 어떨까?
re모듈에 패턴 찾아서 바꾸어주는 함수가 있었던 것 같으니 찾아서 바꾸어 넣어주자
re.search() : 패턴과 같은 것을 찾아줌
re.sub() : 패턴을 찾아서 바꾸어준다. (찾고자하는 패턴, 바꿀 값, 해당 문자열)
re.sub(pattern, repl, string)
2)제안:
replace - 문자열이 나오면 바꾸어주는 함수
과정1. 배열과 re모듈로 풀기
필요한 array 선언
array = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
array2 = ['0','1','2','3','4','5','6','7','8','9']
re 모듈을 import하고, for문으로 array의 index를 찾아준다.
i의 인덱스가 array[i], array2[i]에서 같은 값을 가지므로 바꾸어주도록 설정.
def solution(numbers):
for i in range(len(array)):
numbers = re.sub(array[i], array2[i], numbers)
Error! 1
TypeError: decoding to str: need a bytes-like object, int found
array2의 오브젝트가 int값이어서 생긴 문제로, 배열 내 값들을 string으로 바꾸어주어 해결하였다.
Error! 2
결과값이
onetwothreefourfivesixseveneight9
onefourzerosixseven
로 나오는 문제
def solution(numbers):
answer = ''
for i in range(len(array)):
answer = re.sub(array[i], array2[i], numbers)
return answer
answer 변수를 설정하여 추가해주려고 했는데,
answer에 값을 하나만 저장해주다보니 for문을 다 돌고 마지막값인 9만 저장되어 나오는 것이었다!
answer를 제거하고 numbers에 그대로 바꾸어 담아주는 방식으로 바꾸었다.
numbers = re.sub(array[i], array2[i], numbers)
느낀점:
페어프로그래밍 하니까 다른 방법이나 시야를 공유할 수 있어서 좋다!
거기다 다른 분들의 풀이도 알게되고, 설명하는 과정에서 스스로의 실력도 느는 느낌이다:)
'알고리즘 풀이' 카테고리의 다른 글
[algorithm] 페어 - 프로그래머스: 비밀지도 (0) | 2023.04.28 |
---|---|
[algorithm] 페어 - 백준: 25304 영수증 (0) | 2023.04.27 |
[algorithm] 페어 - 프로그래머스: 로그인 성공?, n의 배수 고르기 (0) | 2023.04.25 |
[algorithm] 프로그래머스: 중복된 문자 제거 (3) | 2023.04.24 |
[TIL] 알고리즘: 소수 찾기 공부 (2) | 2023.04.22 |