코딩테스트/프로그래머스

[프로그래머스] [Level 1] [2021 카카오 채용연계형 인턴십] 숫자 문자열과 영단어

박소민 2022. 3. 27. 14:39
문제) 숫자 문자열과 영단어
 

코딩테스트 연습 - 숫자 문자열과 영단어

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자

programmers.co.kr

 

  • 내 풀이
    • isalpha() 함수 사용하여 숫자영단어가 만들어 질 때 숫자로 변경
def solution(s):
    alpha=['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
    x=''
    answer = ''
    for i in s:
        if i.isalpha():
            x+=i
            if x in alpha:
                answer+=str(alpha.index(x))
                x=''
        else:
            answer+=str(i)        
    return int(answer)
print(solution("one4seveneight"))
#결과
1478

 

  • 다른 사람 풀이
    • enumerate(): (index, value) 튜플 형식으로 반환
def solution(s):
  num=['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
  answer=s
  for i, letter in enumerate(num):
    answer=answer.replace(letter, str(i)) #replace함수는 string으로만 변경 가능: str(i)

  return int(answer)

 

 

  • 다른 사람 풀이 
    • 딕셔너리 활용: num_dic.items()로 key, value 값 불러오기
    • replace 함수 사용하여 key를 value값으로 대체
    • → key로 있는 값만 변경 , 숫자는 그대로
def solution(s):
  num_dic={'zero':'0', 'one':'1', 'two':'2', 'three':'3', 'four':'4', 'five':'5', 'six':'6', 'seven':'7', 'eight':'8', 'nine':'9'}
  answer=s
  for key, value in num_dic.items():
    answer=answer.replace(key,value)

  return int(answer)