[파이썬 코드카타]
숫자 문자열과 영단어
https://school.programmers.co.kr/learn/courses/30/lessons/81301
1) 어떤 문제가 있었나
정수형 숫자와 숫자 영단어가 섞여 있는 문자열을 숫자로 반환하는 문제
s = "2three45sixseven"
result = 234567
2) 내가 시도해본 건 무엇인가
숫자와 영단어를 각 리스트로 생성한 후 영단어 앞뒤에 뛰어쓰기를 추가해 split(" ") 함수를 적용해보려고 했으나 실패
3) 어떻게 해결했나
- zip()과 replace() 함수를 이용해 영단어 문자열이 포함돼 있으면, 숫자로 바꾸도록 조건 지정
def solution(s):
voca = ['zero','one', 'two', 'three','four',
'five','six','seven','eight','nine']
num = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for n, v in zip(num, voca):
if v in s:
s = s.replace(v, str(n))
return int(s)
4) 무엇을 새롭게 알았나
- items(): 딕셔너리에만 사용 가능한 함수로 for문과 결합해 키(Key)와 값(Value)를 한 번에 받아올 수 있음. 매개변수는 갖지 않음
└ 딕셔너리 형의 경우, zip 대신 items()로 값 추출 가능
└ 배열이나 딕셔너리 자료형에 다룰 때 유용한 함수일 듯
num_dic = {"zero":"0", "one":"1", "two":"2", "three":"3", "four":"4", "five":"5", "six":"6", "seven":"7", "eight":"8", "nine":"9"}
def solution(s):
answer = s
for key, value in num_dic.items():
answer = answer.replace(key, value)
return int(answer)
# num_dic.items()
# dict_items([('zero', '0'), ('one', '1'), ('two', '2'), ('three', '3'), ('four', '4'), ('five', '5'), ('six', '6'), ('seven', '7'), ('eight', '8'), ('nine', '9')])
'TIL' 카테고리의 다른 글
[240327] 파이썬: 코드카타 48 & SQL: 코드카타 166 (0) | 2024.03.27 |
---|---|
[240326] 파이썬: 코드카타 47 & SQL: 코드카타 165 (0) | 2024.03.26 |
[240322] 파이썬 실습 코드: 메모리 경량화 (with parquet) (0) | 2024.03.22 |
[240321] 파이썬: 코드카타 45 & SQL: 코드카타 158~160 (0) | 2024.03.21 |
[240321] 클러스터링 분석 - ② 차원 축소: 주성분 분석(PCA)과 t-SNE (0) | 2024.03.21 |