Chef.Yeon
Code Cook
Chef.Yeon
전체 방문자
오늘
어제
  • 분류 전체보기 (230)
    • 게임 개발 (1)
      • Unity (1)
    • Android (27)
      • Kotlin (19)
      • 우아한테크코스 5기 (4)
    • Language (11)
      • 파이썬 (3)
      • Java (7)
    • DB (2)
      • SQL (16)
    • Spring (25)
    • 코딩테스트 (56)
    • Git (1)
    • TIL (85)
    • DevOps (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 파이썬
  • til
  • SQL
  • 백준
  • Android
  • enum
  • 레포지토리
  • 프리코스
  • grafana
  • java
  • 우아한테크코스
  • kotlin
  • spring
  • Wil
  • 프로그래머스
  • 내림차순
  • rsocket
  • ec2
  • kibana
  • webflux
  • elasticsearch
  • 코틀린
  • 안드로이드
  • 문자열
  • MariaDB
  • 코틀린 인 액션
  • Docker
  • 코딩테스트
  • 에라토스테네스의 체
  • 다이나믹 프로그래밍

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Chef.Yeon

Code Cook

코딩테스트

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

2022. 10. 2. 23:20

문제 설명

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

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

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

참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다.

숫자 영단어
0 zero
1 one
2 two
3 three
4 four
5 five
6 six
7 seven
8 eight
9 nine

제한 조건

  • 1 ≤ s의 길이 ≤ 50
  • s가 "zero" 또는 "0"으로 시작하는 경우는 주어지지 않습니다.
  • return 값이 1 이상 2,000,000,000 이하의 정수가 되는 올바른 입력만 s로 주어집니다.

입출력 예

s result
"one4seveneight" 1478
"23four5six7" 234567
"2three45sixseven" 234567
"123" 123

내 풀이

zip 으로 데이터를 엮고 eng과 num의 원소를 key와 val에 담는다.

key값, 즉 eng 리스트에 해당되는 문자열이 문자열 s에 있다면 

해당 key 값을 val 값으로 replace 한다.

replace는 str 타입만 가능하기 때문에 val 값을 str로 타입 변경한다.

def solution(s):
    num = [0,1,2,3,4,5,6,7,8,9]
    eng = ["zero", "one", "two", "three", "four", "five","six", "seven", "eight", "nine"]
    for key, val in zip(eng, num):
        if key in s:
            s = s.replace(key,str(val))
    return int(s)

다른 사람 풀이

딕셔너리를 사용하여 key와 value 로 replace한 결과이다.

딕셔너리의 키-값 쌍으로 접근 시에는 items()를 사용해야 한다.

num_dic = {"zero":"0", "one":"1", "two":"2", "three":"3", "four":"4", "five":"5", "six":"6", "seven":"7", "eight":"8", "nine":"9"}

def solution(s):
    answer = s
    for key, value in num_dic.items():
        answer = answer.replace(key, value)
    return int(answer)
728x90

'코딩테스트' 카테고리의 다른 글

[프로그래머스/파이썬] 2016년  (0) 2022.10.04
[프로그래머스/파이썬] 두 개 뽑아서 더하기  (0) 2022.10.02
[프로그래머스/파이썬] K번째 수  (0) 2022.10.02
[프로그래머스/파이썬] 문자열 내 마음대로 정렬하기  (0) 2022.10.01
[프로그래머스/파이썬] [1차]비밀지도  (0) 2022.09.30
    '코딩테스트' 카테고리의 다른 글
    • [프로그래머스/파이썬] 2016년
    • [프로그래머스/파이썬] 두 개 뽑아서 더하기
    • [프로그래머스/파이썬] K번째 수
    • [프로그래머스/파이썬] 문자열 내 마음대로 정렬하기
    Chef.Yeon
    Chef.Yeon
    보기 좋고 깔끔한 코드를 요리하기 위해 노력하고 있습니다.

    티스토리툴바