💫 문제 설명
매개변수
s: 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열- 1 ≤
s의 길이 ≤ 50 s가 “zero” 또는 “0”으로 시작하는 경우는 주어지지 않습니다.- return 값이 1 이상 2,000,000,000 이하의 정수가 되는 올바른 입력만
s로 주어집니다.
- 1 ≤
| 숫자 | 영단어 |
|---|---|
| 0 | zero |
| 1 | one |
| 2 | two |
| 3 | three |
| 4 | four |
| 5 | five |
| 6 | six |
| 7 | seven |
| 8 | eight |
| 9 | nine |
→ s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성
| s | result |
|---|---|
"one4seveneight" |
1478 |
"23four5six7" |
234567 |
"2three45sixseven" |
234567 |
"123" |
123 |
숫자의 일부 자릿수를 영단어로 바꾸는 예시
- 1478 → “one4seveneight”
- 234567 → “23four5six7”
💫 코드
def solution(s):
dic = {
0: "zero",
1: "one",
2: "two",
3: "three",
4: "four",
5: "five",
6: "six",
7: "seven",
8: "eight",
9: "nine",
}
arr = []
for i in range(10):
if str(i) in s:
for j in range(s.count(str(i))):
arr.append([s.find(str(i)), str(i)])
s = s.replace(str(i), 'X', 1)
if dic[i] in s:
for j in range(s.count(dic[i])):
arr.append([s.find(dic[i]), str(i)])
s = s[:s.find(dic[i])] + "X" * len(dic[i]) + s[s.find(dic[i]) + len(dic[i]):]
arr.sort(key=lambda x:x[0])
a, b = zip(*arr)
return int(''.join(b))

답글 남기기