[알고리즘] 프로그래머스 : 숫자 문자열과 영단어 - LV1

eternal moment·2023년 7월 27일
0

문제

https://school.programmers.co.kr/learn/courses/30/lessons/81301

2023.07.27 풀이

def solution(s):
    answer = 0
    arr=["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
    if s.isdigit()==True:
        answer=int(s)
    else:
        for i in arr:
            if i in s:
                s=s.replace(i, str(arr.index(i)))
                print(arr.index(i), s)
                
    answer=int(s)
    return answer
  • 딕셔너리로 키-벨류를 넣고 대체하는 방법도 생각하긴 했으나, 값과 인덱스가 동일하므로 리스트로 진행했음
  • 문자열에 숫자만 있는 경우 빠른 처리를 위해 isdigit 함수를 사용했으나, 문자열이 있는 경우에서는 속도 저하를 일으키는지 아직 모호함
  • replace는 실제 문자열을 바꾸지않는다는 것 !!!!!


다른 풀이

def solution(s):
    arr = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
    for i,c in enumerate(arr):
        s = s.replace(c,str(i))
    return int(s)


check point

  • replace 함수는 대체한 문자열을 반환하지 실제 문자열 자체를 바꾸지 않음
  • isalpha()와 isdigit() -> 문자열이 숫자로만 이뤄져있는지, 문자로만 이뤄져있는지.
  • str.isnumeric() :해당 문자열이 숫자인지 아닌지 확인 (=.isdigit)
  • dic.items() : 딕셔너리의 key와 value를 한꺼번에 가져올 수 있
  • enumerate : 인덱스와 값을 함께 반환

0개의 댓글