리트코드 LeetCode - 819. Most Common Word (Python)

김승민·2022년 11월 2일

알고리즘

목록 보기
1/5

파이썬 알고리즘 인터뷰를 읽으면서 공부하다가
리트코드 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()으로 공백으로 단어를 구분하였다.

0개의 댓글