숫자 문자열과 영단어 ( https://programmers.co.kr/learn/courses/30/lessons/81301 )
문자열로 주어지는 영문자+숫자 조합의 s가 있습니다. 영문자는 각각 zero ~ nine 까지 각자의 정수와 대치해야 합니다. 그렇게 영문자를 모두 숫자로 대치하여 순서대로 나열한 숫자를 반환하는 문제입니다.
일단 python의 dictionary를 이용하여 각 영문자 숫자에 대비되는 숫자를 입력해 주었습니다.
주어지는 문자열을 for문으로 하나씩 확인하며 영어 문자인지 판별해 영어 문자가 아닐 경우 숫자이므로 바로 arr에 담아주고 영어 문자일 경우 string 변수에 이어 붙여줍니다.
이어붙여주는 과정마다 해당 string 문자열이 diction에 존재하는지 확인하여 존재할 때 까지 반복, 존재하는 것을 확인할 경우 해당 문자열에 해당하는 숫자를 arr에 담아줍니다.
arr에 담아 준 뒤 string은 ""으로 초기화 해주어 다음 영어 문자를 준비합니다.
위의 과정을 반복해 for문이 끝나면 arr에 담아져 있는 숫자들을 모두 이어붙여 answer에 담아 return 합니다.
def solution(strs):
diction = {
"zero" : "0", "one" : "1", "two" : "2",
"three" : "3", "four" : "4", "five" : "5",
"six" : "6", "seven" : "7", "eight" : "8",
"nine" : "9"
};
arr = []; #반환된 숫자들을 담을 arr
string = ""; #문자열을 담아줄 string
for s in strs:
if s.isalpha(): #만약 이번 s가 영문자일 경우
string += s; #string에 이어 붙여줍니다.
if string in diction: #현재 string이 diction에 존재하면
arr.append(diction[string]); #해당 string에 맞는 숫자를 arr에 담아줍니다.
string = ""; #string을 ""으로 초기화 해 다음 문자를 준비합니다.
else: #숫자일 경우 바로 arr에 담아줍니다.
arr.append(s);
answer = int("".join(arr)); #arr를 이어붙여 준뒤 int형으로 변환하여 asnwer에 담아줍니다.
#끝!
return answer;