- 코딩테스트 연습 > 2021 카카오 채용연계형 인턴십 > 숫자 문자열과 영단어
- https://school.programmers.co.kr/learn/courses/30/lessons/81301
코드
numberString = {'zero': '0', 'one': '1', 'two': '2', 'three': '3', 'four': '4', 'five': '5','six': '6','seven': '7', 'eight': '8','nine': '9'}
def solution(s):
answer = 0
stringanswer = ''
tmpword = ''
for word in s:
if ord(word)>=97 and ord(word)<=122: # 문자라면
tmpword+=word
if tmpword in numberString:
stringanswer += numberString[tmpword]
tmpword = ''
else: # 숫자라면
stringanswer += str(word)
answer = int(stringanswer)
return answer
풀이
input을 돌면서 아스키코드를 사용해
문자열이라면? tmpword에 append해줌 -> 문자열만 뽑아내기
하나의 숫자를 가르키는 문자가 완성이 되었다면 stringanswer에 append해줌
숫자라면? stringanswer에 append해줌
input을 모두 순회하며 문자열인지 숫자인지 check하는 것이 solution
단점: 문자열을 계속 돌며 아스키코드로 변환해주며 문자인지 check해주는 것이 시간 소모, 임의의 변수에 계속할당해주는 것이 메모리 낭비
개선된 코드
def solution(s):
eng_num = {
"zero" : "0",
"one" : "1",
"two" : "2",
"three" : "3",
"four" : "4",
"five" : "5",
"six" : "6",
"seven" : "7",
"eight" : "8",
"nine" : "9"
}
# s 문자열안에 숫자영단어 있으면 숫자로 바꿔주기
for eng, num in eng_num.items():
if eng in s:
s = s.replace(eng, num)
return int(s)
풀이
딕셔너리 타입을 활용하여 key와 value값을 각각 eng과 num변수에 할당해줌
딕셔너리를 돌며, key값(영어 문자)이 input에 존재한다면 replace해줌 (영어 문자를 숫자로 / eng -> num)
'Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스/python/Lv2] 튜플 (0) | 2023.12.16 |
---|---|
[프로그래머스/python/Lv2] 캐시 (0) | 2023.12.15 |
[BFS] Python 43162 네트워크 (0) | 2023.05.30 |
[Sorting] Python 42577 전화번호 목록 (0) | 2023.04.18 |
[구현] 프로그래머스 136798 기사단원의 무기 (0) | 2023.03.21 |