💡문제 설명
일부 자릿수를 영단어로 바꾼 카드를 건네주면 원래 숫자를 찾는 게임.
숫자의 일부 자릿수가 영단어로 바뀌었거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매겨변수로 주어진다. s 가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성하기.
💡제한 조건 및 입출력 예시
💡정답코드
- dictionary 를 정의해준다. {'영어' : '숫자', ... }
- temp_str = '' 임시 문자열 저장 변수
- result = '' 최종 결과 저장 변수
- 만약에 "one4seven8" 이라는 문자열 s 가 들어온다면 o -> n -> e -> 4 -> ... 로 순회를 시킨다. 만약에 문자열 자료형의 메서드인 isdigit()을 통해 자료형이 숫자형이라면 result 에 더해준다. 만약 아니라면 temp_str 에 o->n->e 형식으로 쌓는다.
- dictionary 에 키 값으로 존재하는 경우가 완성이 된다면 num_dict 의 키를 통해 값을 찾아 result에 더해준다. 그리고 더해주는 로직이 한 번 실행이 되었다면 다시 temp_str 을 공백 문자열 상태로 초기화 해준다 ! 이렇게 문자열을 모두 순회할 때 까지 반복한다
- 완성된 문자열을 int() 내장함수로 감싸줘 정수 자료형으로 return 한다.
- 결론적으로 "one4seven8" 은 1478 이라는 값을 return 하게 된다.
def solution(s):
# 영단어를 숫자로 매핑하는 딕셔너리
num_dict = {
"zero": "0", "one": "1", "two": "2", "three": "3", "four": "4",
"five": "5", "six": "6", "seven": "7", "eight": "8", "nine": "9"
}
# 임시 문자열을 저장할 변수
temp_str = ""
# 최종 결과를 저장할 변수
result = ""
# 입력 문자열을 하나씩 순회
for char in s:
# 만약 숫자라면 결과에 바로 추가
if char.isdigit():
result += char
else:
# 임시 문자열에 추가
temp_str += char
# 만약 임시 문자열이 영단어 딕셔너리에 있다면 변환하여 결과에 추가
if temp_str in num_dict:
result += num_dict[temp_str]
temp_str = "" # 임시 문자열 초기화
return int(result)
입문 단계에서는 많이 하는 것보다 제대로 알고 넘어가는 것이 중요하다.
반응형
'Programming > Python' 카테고리의 다른 글
[프로그래머스 Python] 푸드 파이트 대회 (5) | 2024.07.15 |
---|---|
[프로그래머스 Python] 가장 가까운 값 찾기 (0) | 2024.07.12 |
[프로그래머스 Python] 시저 암호 (0) | 2024.07.10 |
[프로그래머스 Python] 제일 작은 수 제거하기 (속도 이슈..?) (0) | 2024.07.05 |
[프로그래머스 Python] 가운데 글자 가져오기, 콜라츠 추측, 문자열 내림차순 배치하기 (0) | 2024.07.03 |