프로그래머스-코딩테스트/Lv.1

숫자 문자열과 영단어

stem_sw 2024. 9. 10. 08:21
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

문제


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

다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.

  • 1478 → "one4seveneight"
  • 234567 → "23four5six7"
  • 10203 → "1zerotwozero3"

이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.

 

 

 

 

코드


def solution(s):
    answer = ''
    eng = ['zero','one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
    temp = ''
    s_li = list(s)
    for i in range(len(s)):
        temp += s_li.pop(0)
        if temp.isnumeric():
            answer += str(temp)
            temp = ''
        elif temp in eng:
            answer += str(eng.index(temp))
            temp = ''
        else:
            continue
            
    return int(answer)
  • temp에 s의 요소들을 하나씩 추가해 숫자인지, 영문숫자인지 판별

 

 

 

 

 

노트


요소찾기

find(): only문자열 가능. 리스트, 튜플은 에러

index(): 문자열, 리스트, 튜플 가능.

 

 

 

replace 활용

def solution(s):
    eng = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
    answer = s
    for value, key in enumerate(eng):
        print(key, value)
        answer = answer.replace(key, str(value))
    
    return int(answer)
  • replace(찾을 문자, 바꿀문자, 횟수)

 

 

 

 

참조


https://sxbxn.tistory.com/35

 

[Python] 위치(인덱스) 찾기 (find(), index())

백준 1167 트리의 지름 특정 원소가 리스트의 몇 번째 인덱스에서 등장하는지 찾아야 했다. indexOf()가 안되길래 검색해보니 indexOf()는 자바스크립트 문법이었다.. 이참에 잘 정리해두자. 위치(인덱

sxbxn.tistory.com

https://school.programmers.co.kr/learn/courses/30/lessons/81301/solution_groups?language=python3

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr