https://school.programmers.co.kr/learn/courses/30/lessons/81301
✳️ 코드 작성
🤔 코드 아이디어
1. 문제에서 제시한 숫자에 대응하는 영단어 표를 딕셔너리로 저장한다.
2. for문을 통해 딕셔너리를 순회한다.
3. 문자열 s에 딕셔너리 순회중 key 값과 동일한 문자열이 있으면 value 값으로 교체한다.
4. 반환은 정수 s로 한다.
💟 코드 풀이
def solution(s):
dict = {'zero' : 0,
'one' : 1,
'two' : 2,
'three' : 3,
'four' : 4,
'five' : 5,
'six' : 6,
'seven' : 7,
'eight' : 8,
'nine' : 9}
for key, value in dict.items():
s = s.replace(key, str(value))
return int(s)
🟣 딕셔너리 생성
- 코드의 첫 번째 부분에서 숫자에 해당하는 영단어를 키(key)로, 그에 대응되는 숫자를 값(value)으로 하는 딕셔너리 dict을 생성
🟣 딕셔너리 탐색을 위한 for문
- for문을 사용해 딕셔너리의 모든 key와 value를 차례로 탐색하기 위해 items() 함수를 이용
- dict.items()는 딕셔너리의 모든 키-값 쌍을 튜플 형태로 반환
- 이 튜플에서 키와 값을 각각 key와 value 라는 변수에 할당하면서 반복문을 실행
🟣 문자열 대체
- 문자열 s에서 영단어(key)가 있을 경우, replace() 함수를 이용해 그 영단어를 대응되는 숫자(value)로 변경
- str() 함수를 사용한 이유
- 딕셔너리에서 찾은 값(value)이 숫자 형식(int)이기 때문에, 이를 문자열로 변환해줘야만 문자열 내에서 대체(replace)할 수 있기 때문
- replace() 함수는 문자열을 대상으로 동작하는 함수이기 때문에, key와 value 모두 문자열이어야 함
🟣 정수로 변환
- 최종적으로 변환된 문자열을 int() 함수를 사용하여 정수로 변환해서 반환
💠 예시
🔵 입력 예시
s = "one4seveneight"
🔵 딕셔너리 생성
{'zero': 0, 'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6, 'seven': 7, 'eight': 8, 'nine': 9}
🔵 딕셔너리 탐색 및 문자열 대체
- 딕셔너리를 for문을 통해 탐색하기 시작
- 딕셔너리의 각 키와 값의 쌍을 반복한다.
- 첫 번째 쌍 'zero': 0부터 시작해서 차례로 모든 쌍을 확인 (반복문이 10번 이루어짐)
1️⃣ 첫 번째 반복
- key = 'zero', value = 0
- 문자열 s에는 'zero'가 없으므로, s.replace('zero', '0')는 아무 변화도 일으키지 않음
- 변경 후 문자열 : "one4seveneight"
2️⃣ 두 번째 반복
- key = 'one', value = 1
- 문자열 s에 'one'이 포함되어 있으므로, s.replace('one', '1')가 실행
- 'one'이 숫자 '1'로 변경
- 변경 후 문자열 : "14seveneight"
3️⃣ 세 번째 반복
- key = 'two', value = 2
- 문자열 s에 'two'가 없으므로, s.replace('two', '2')는 아무 변화도 일으키지 않음
- 변경 후 문자열 : "14seveneight"
4️⃣ 네 번째 반복
- key = 'three', value = 3
- 문자열 s에 'three'가 없으므로, s.replace('three', '3')는 아무 변화도 일으키지 않음
- 변경 후 문자열 : "14seveneight"
5️⃣ 다섯 번째 반복
- key = 'four', value = 4
- 문자열 s에 'four'가 없으므로, s.replace('four', '4')는 아무 변화도 일으키지 않음
- 변경 후 문자열 : "14seveneight"
6️⃣ 여섯 번째 반복
- key = 'five', value = 5
- 문자열 s에 'five'가 없으므로, s.replace('five', '5')는 아무 변화도 일으키지 않음
- 변경 후 문자열 : "14seveneight"
7️⃣ 일곱 번째 반복
- key = 'six', value = 6
- 문자열 s에 'six'가 없으므로, s.replace('six', '6')는 아무 변화도 일으키지 않
- 변경 후 문자열 : "147eight"
8️⃣ 여덟 번째 반복
- key = 'seven', value = 7
- 문자열 s에 'seven'이 포함되어 있으므로, s.replace('seven', '7')가 실행
- 'seven'이 숫자 '7'로 변경
- 변경 후 문자열 : "147eight"
9️⃣ 아홉 번째 반복
- key = 'eight', value = 8
- 문자열 s에 'eight'이 포함되어 있으므로, s.replace('eight', '8')가 실행
- 'eight'이 숫자 '8'로 변경
- 변경 후 문자열 : "1478"
🔟 열 번째 반복
- key = 'nine', value = 9
- 문자열 s에 'nine'가 없으므로, s.replace('nine', '9')는 아무 변화도 일으키지 않음
- 변경 후 문자열 : "147eight"
🔵 최종 반환
- 모든 반복이 끝난 후, 문자열 s는 "1478"이 됨
- 문자열을 int() 함수를 사용해 정수로 변환하여 반환 → 1478
result = solution("one4seveneight")
print(result)
# 1478
'📒 Today I Learn > 🐍 Python' 카테고리의 다른 글
[Python] k번째 수 (0) | 2024.09.19 |
---|---|
[Python] 문자열 내 마음대로 정렬하기 (0) | 2024.09.13 |
[Python] 시저 암호 (chr, ord) (0) | 2024.09.11 |
[Python] 최소 직사각형 (0) | 2024.09.10 |
[Python] 크기가 작은 부분 문자열 (0) | 2024.09.09 |