🔍 알고리즘/프로그래머스 Python
[Python] 프로그래머스 81301.숫자문자열과영단어 (Lv.1)
탄치
2022. 7. 11. 22:31
https://school.programmers.co.kr/learn/courses/30/lessons/81301
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
오늘 푼 다른 문제들과 비슷한 간단한 시뮬레이션 문제입니다.
앞에서부터 입력된 List를 쭉 읽어가면서 영어로 된 숫자가 나오면 변환하고 단어의 길이만큼 점프해 진행했습니다.
숫자가 나오면 바로 answer에 누적해주었습니다.
자릿수 문제는 앞에서부터 List를 읽어가기 때문에 새로운 숫자가 더해지기 전에 기존의 answer에 10을 곱하고 더하는 식으로 구현했습니다.
List에 각 자릿수의 숫자를 하나씩 append하고 반복문이 끝난 후 마지막에 List를 숫자로 변환시켜도 같은 결과가 나옵니다.
def solution(s):
answer = 0
i = 0
# numList = []
while(i < len(s)):
character = ord(s[i])
num = 0
if(48 <= character and character <= 57):
num = int(s[i])
i += 1
else :
if(s[i] == 'z'):
num = 0
i += 4
elif(s[i] == 'o'):
num = 1
i += 3
elif(s[i] == 'e'):
num = 8
i += 5
elif(s[i] == 'n'):
num = 9
i += 4
elif(s[i] == 't'):
if(s[i+1] == 'w'):
num = 2
i += 3
else :
num = 3
i += 5
elif(s[i] == 'f'):
if(s[i+1] == 'o'):
num = 4
i += 4
else :
num = 5
i += 4
else :
if(s[i+1] == 'i'):
num = 6
i += 3
else :
num = 7
i += 5
answer = answer * 10
answer += num
# numList.append(str(num))
# print(numList)
# numString = "".join(numList)
# answer = int(numString)
return answer
input = ["one4seveneight","23four5six7","2three45sixseven","123"]
for i in input:
print(solution(i))
728x90