728x90

숫자 문자열과 영단어

 

문제 설명

 

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

 

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

 

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

입출력 예 설명

입출력 예 #1

 

문제 예시와 같습니다.

입출력 예 #2

 

문제 예시와 같습니다.

입출력 예 #3

 

"three"는 3, "six"는 6, "seven"은 7에 대응되기 때문에 정답은 입출력 예 #2와 같은 234567이 됩니다.

입출력 예 #2와 #3과 같이 같은 정답을 가리키는 문자열이 여러 가지가 나올 수 있습니다.

입출력 예 #4

 

s에는 영단어로 바뀐 부분이 없습니다.

제한시간 안내

정확성 테스트 : 10초 

 

내 답

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def solution(s):
    answer = ""
    tempWord = ""
    
    numDict = {"zero":0"one":1"two":2"three":3"four":4"five":5"six":6"seven":7"eight":8"nine":9}
    
    for i in s:
        try:
            answer+=str(int(i))
        except:
            tempWord+=i
            if tempWord in numDict.keys():
                print(tempWord)
                answer+=str(numDict[tempWord])
                tempWord=""
    
    return int(answer)
cs

 

남의 답 1

 

1
2
3
4
5
6
7
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)
cs

 

남의 답 2

 

1
2
3
4
from functools import reduce
digit={'zero':'0','one':'1','two':'2','three':'3','four':'4','five':'5','six':'6','seven':'7','eight':'8','nine':'9'}
def solution(s):
    return int(reduce(lambda ans,d:ans.replace(d,digit[d]),digit.keys(),s))
cs

 

남의 답 3

 

1
2
def solution(s):        
    return int(s.replace("zero""0").replace("one""1").replace("two","2").replace("three""3").replace("four""4").replace("five""5").replace("six""6").replace("seven""7").replace("eight""8").replace("nine""9"))
cs

 

남의 답 4

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def solution(s):
    digit={"zero":"0","one":"1","two":"2","three":"3","four":"4","five":"5","six":"6","seven":"7","eight":"8","nine":"9"}
    answer = ""
    temp=""
    for ss in s:
        if ss.isdigit():
            answer+=ss
        else:
            temp+=ss
            value = digit.get(temp)
            if value!=None:
                answer+=value
                temp=""
    return int(answer)
cs

 

C# 답

 

1
2
3
4
5
public class Solution {
    public int solution(string s) {
        return int.Parse(s.Replace("zero""0").Replace("one""1").Replace("two","2").Replace("three""3").Replace("four""4").Replace("five""5").Replace("six""6").Replace("seven""7").Replace("eight""8").Replace("nine""9"));
    }
}
cs

 

 

1234점 + 2점 -> 1236점

 

728x90
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기