습관을 애정한다

Code Signal: Intro=52/60

by 습관중독
import re
import operator
def longestWord(text):
    #LIST = list(re.findall(r"[\w']+", text))    
    LIST = list(filter(None, re.split("[, '['_\-!?:]+", text)))
    print (LIST)
    a = {}
    for i in range(len(LIST)):
        a[LIST[i]] = len(LIST[i])
    print (a)
    key_max = max(a.items(), key=operator.itemgetter(1))[0]
    return key_max
text = "ab-CDE-fg_hi"
longestWord(text)
# "Ready, steady, go!" = "steady".
# "To be or not to be"
# "fg_hi"  => "CDE"

애먹은 부분은 2가지
1. 문자열을 여러개 구분자로 분할하는 법: 2가지 방법 시도
1) re.findall(r"[\w']+", text))
import re한 다음, re.findall로 해결하려 했으나
hidden test에서 "ab-CDE-fg_hi"에서 "CDE"를 출력해야 했는데 자꾸 "fg_hi"를 출력
그 이유는 '_'를 word 구성요소로 보아 나누지 않기 때문.
hidden test를 보기 위해 코인 1만 쓰고 보아 다음의 방법으로 바꿔서 문자열 분할 시도

2) filter(None, re.split("[, '['_\-!?:]+", text))
"" 안에 '_'를 넣어서 이 hidden test는 통과.
그러나 "Ready[[[, steady, go!"에서 "steady"를 토해내야 하는데
자꾸 "Ready[[["를 토해내서 "" 안에 '['을 추가하여 해결

2. 문자열의 길이 max()함수
그냥 max()하면 문자열 길이가 아닌 아스키코드의 max()를 리턴하고,
그러면 소문자로 구성된 문자열이 max가 됨.
위의 방법으로 해결.

'코드 파이트(Code Signal)' 카테고리의 다른 글

Code Signal: Intro=54/60  (0) 2020.02.23
Code Signal: Intro=53/60  (0) 2020.02.23
Code Signal: Intro=51/60  (0) 2020.02.23
Code Signal: Intro=50/60  (0) 2020.02.23
Code Signal: Intro=49/60  (0) 2020.02.23

블로그의 정보

습관을 애정한다

습관중독

활동하기