[프로그래머스] 숫자 문자열과 영단어 파이썬

FFTL:)·2021년 7월 18일
1
post-custom-banner

숫자 문자열과 영단어 ( 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;

profile
생각하는 개발자가 되자!
post-custom-banner

0개의 댓글