https://school.programmers.co.kr/learn/courses/30/lessons/81301
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
처음 접근 >> 리스트를 숫자와 문자 두개로 만들어 인덱스를 통한 접근으로 바꾸줘야겠다
def solution(s):
answer = "" # 편하게 더하기 위해 str으로 바꿔준다.
## 두개의 리스트를 만들고 index를 통해 변경해주겠다.
num = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
string = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
temp = "" # 빈 문자열을 선언해주고
for i in s: # 문자열 s를 돌면 알파벳 하나하나 돈다.
if i in num: # 만약 i가 그냥 숫자면
answer = answer + i # 바로 붙여준다.
else: # i가 숫자가 아니라 알파벳이면
temp = temp + i # temp에 누적하여 더해준다.
if temp in string: # string리스트 속에 temp가 들어있다면
# 문자열로 변환(string리스트.리스트 속 인텍스 찾아(temp와 같은 위치의))
answer = answer + str(string.index(temp))
temp = "" # temp는 사용했으니 다시 빈 문자열로 바꿔준다.
answer = int(answer) # return을 숫자형으로 해줘야 해
return answer
문제를 풀고 해답을 찾아보니 dic와 replace()함수를 이용하여 더 편하게 접근이 가능했다.
def solution(s):
answer = 0
# replace를 사용하기 위한 dic 생성
dic = {"zero" : "0", "one" : "1", "two" : "2", "three" : "3", "four" : "4", "five" : "5", "six" : "6", "seven" : "7", "eight" : "8", "nine" : "9"}
for key in dic: # for문으로 dic를 돌면 key값들을 돌아
# s에 key가 들어있다면, dic[key]에 해당하는 value값으로 바꿔줘
s = s.replace(key, dic[key]) # 그런데 그냥 s.replace()만 사용하면 바뀌지는 않아 그래서 이를 다시 s에 저장해줘
answer = int(s) # 아직 s가 문자열이니 int()로 변환해서 answer에 저장해줘
return answer'Problem Solving > Programmers' 카테고리의 다른 글
| 프로그래머스 [level 1] 달리기 경주 - 178871 (0) | 2023.05.23 |
|---|
댓글