파이썬 알고리즘 인터뷰를 읽으면서 공부하다가
리트코드 819번 문제인 Most common Word를 풀어보았다.

금지된 단어를 제외한 가장 흔하게 등장하는 단어를 출력하라.
대소문자 구분을 하지 않으며, 구두점(쉼표,마침표 등) 또한 무시한다.
입력:
paragraph = "Bob hit a ball, the hit BALL flew far after it was hit"
금지어:
banned = ["hit"]
쉬워보인다.
그래서 처음에는 저자의 풀이를 보고 '왜 이렇게 어렵게 생각을 하지?' 라고 느꼈고 금방 코드를 써낸 뒤 제출했다.


output도 정답처럼 잘 나오고.. 잘 풀었다고 생각했다.
근데 leetcode에 직접가서 submit 해보니 테스트 케이스에서 오답이 떴다.
이유는 테스트 케이스 중에 물음표, 느낌표 등이 Input에 들어있는 경우도 그대로 list에 들어갔기 때문이다.
replace()로 구두점은 다 제거했지만,
'!', '?', '!?' 과 같은 문자들은 해결이 안된것이다.
결국 날먹은 포기하고, 정규식을 이용해서 다시 풀어보았다.

정답이다.
코드는 다음과 같다.

[line11] :
리스트 컴프리헨션을 이용했고, 정규식(re.sub)에서 \w 은 단어 문자를 뜻한다. 단어 문자를 제외한 모든 문자를 공백으로 대체하고 words라는 리스트에 넣어준다. 대소문자 구분을 하지않기 위해 lower(), split()으로 공백으로 단어를 구분하였다.