def solution(s):
s = s.replace('zero','0')
s = s.replace('one','1')
s = s.replace('two','2')
s = s.replace('three','3')
s = s.replace('four','4')
s = s.replace('five','5')
s = s.replace('six','6')
s = s.replace('seven','7')
s = s.replace('eight','8')
s = s.replace('nine','9')
return int(s)
성능 고민 없이 바로 생각난 풀이이다.
lv0에서 비슷하지만 좀더 어려운게 있었는데..🤔
def solution(s):
thisdict= {
'zero':'0',
'one':'1',
'two':'2',
'three':'3',
'four':'4',
'five':'5',
'six':'6',
'seven':'7',
'eight':'8',
'nine':'9'
}
for x in thisdict.keys():
if x in s:
s = s.replace(x,thisdict[x])
return int(s)
다른 사람 풀이에서 같은 방식으로 푼 코드의 댓글 중..
이건 O(N)처럼 보이지만 replace가 그 자체로 O(N) 이상이고 심지어는 O(N^2)까지도 가능한 메소드라 최악의 경우 O(N^3)까지 나옵니다. 풀이는 짧지만 시간 복잡도는 많이 커집니다.
따라서 replace를 쓰면 딕셔너리를 쓰는 의미가 없음
#성능 분석에서 쓴 방법으로 해보기..
비슷한 방식을
첫 시도 dictionary
테스트 1 〉 통과 (0.01ms, 10.3MB) 통과 (0.02ms, 10.5MB)
테스트 2 〉 통과 (0.02ms, 10.5MB) 통과 (0.02ms, 10.4MB)
테스트 3 〉 통과 (0.01ms, 10.5MB) 통과 (0.02ms, 10.3MB)
테스트 4 〉 통과 (0.02ms, 10.4MB) 통과 (0.02ms, 10.3MB)
테스트 5 〉 통과 (0.02ms, 10.5MB) 통과 (0.02ms, 10.3MB)
테스트 6 〉 통과 (0.02ms, 10.4MB) 통과 (0.02ms, 10.4MB)
테스트 7 〉 통과 (0.02ms, 10.3MB) 통과 (0.02ms, 10.4MB)
테스트 8 〉 통과 (0.02ms, 10.5MB) 통과 (0.02ms, 10.4MB)
테스트 9 〉 통과 (0.03ms, 10.4MB) 통과 (0.02ms, 10.4MB)
테스트 10 〉 통과 (0.02ms, 10.3MB) 통과 (0.02ms, 10.3MB)