https://school.programmers.co.kr/learn/courses/30/lessons/81301
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드 & 풀이
def solution(s):
answer = '' # 리턴할 값
num = ['zero', 'one', 'two', 'three', 'four',
'five', 'six', 'seven', 'eight', 'nine']
tmp = ''
for i in s:
if i.isalpha(): # i가 알파벳인지
tmp += i
if tmp in num:
answer += str(num.index(tmp))
tmp = ''
elif i.isdigit(): # i가 숫자인지
answer += str(i)
return int(answer)
해당 문제는 비교적 카카오 코테 Lv.1 문제 중에서는 간단한 문제라고 생각하였다. 작성한 코드의 대략적인 풀이법은 숫자의 영문을 담은 num 리스트를 생성하고, 문자열 s를 for문을 돌면서 각 문자열이 알파벳이면 tmp에 추가해주고 tmp가 num에 있다면 영문이 완성되었다는 것이니 리턴할 answer에 index 함수를 이용해 숫자를 추가해준다. 각 문자열이 숫자이면 그대로 리턴하면 되므로 answer에 숫자를 추가해준다. 마지막에 값을 리턴할 때에는 제한사항을 꼭 확인하여 int형으로 리턴한다.
다른 코드 & 풀이
def solution(s):
answer = s
number = ['zero', 'one', 'two', 'three', 'four',
'five', 'six', 'seven', 'eight', 'nine']
for idx, num in enumerate(number):
answer = answer.replace(num, str(idx))
return int(answer)
알고리즘 외 단순 구현 문제를 풀지 않다보니 파이썬 내장 함수를 많이 잊었다는 것을 상기시켜준 코드였다. 문자열에 특정 문자가 있으면 이를 대체해주는 replace 함수를 사용하면 가독성 높은 코드를 완성할 수 있는 것이다. 알고리즘 문제 뿐 아니라 구현 문제도 꾸준히 풀어 코테 감을 잃지 않도록 해야겠다.
'Python > Coding Test' 카테고리의 다른 글
[프로그래머스] 키패드 누르기 (1) | 2024.02.26 |
---|---|
[프로그래머스] 신규 아이디 추천 (0) | 2024.02.26 |
[프로그래머스] 신고 결과 받기 (0) | 2024.02.14 |
[프로그래머스] 개인정보 수집 유효기간 (0) | 2024.02.13 |
[프로그래머스] 가장 많이 받은 선물 (0) | 2024.02.08 |