Python/Coding Test

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

semperparatus 2024. 2. 16. 11:27

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 함수를 사용하면 가독성 높은 코드를 완성할 수 있는 것이다. 알고리즘 문제 뿐 아니라 구현 문제도 꾸준히 풀어 코테 감을 잃지 않도록 해야겠다.