04. 가장 흔한 단어(leetcode: 819)
분석
인자로 문자열과, 금지된 단어의 배열이 있다.
먼저 인자를 출력해보자.
보다시피 인자는 문자열에는 대문자 와 구두점이 들어있다. 따라서 이에 대한 처리가 우선되어야한다.
대문자를 소문자로
문자열 메서드 str.lower()
를 사용하자
구두점을 없애는 방법
정규식으로 없애보자
문자열 paragraph 에서 단어와 공백을 제외한 나머지를 전부 없앤다.
문자열에서 구두점까지 없앴으면 이제 이 문자열을 split 해서 배열로 만들자. 아 이전에 lower은 잊지말고
문자열을 배열로
하지만 우리는 인자로 banned 배열이 주어졌고 해당 배열에 없는 단어만 챙겨야 한다.
즉, 우리가 만들어야 하는 단어의 배열 words 에는 banned 에는 없는 단어만 넣어야한다. 이 경우에는 리스트 컴프리헨션 이 아주 유용하게 사용된다.
단어의 배열을 Counter 객체로 만들자
우리는 가장 흔한 단어 를 찾아야한다. 가장 흔한 단어를 찾기 위해서는 배열에서 수를 세야한다. Map 을 만들고 반복문을 통해서 하나하나 증가시킬 수도 있지만 Counter 객체를 이용하면 금방 해결할 수 있다.
풀이
위에서 필요한 모든것을 알아봤으므로 이제 문제를 풀자.
들어온 문자열에서 구두점을 없앤다.
문자열을 배열로 만들자. 이 때 banned 에 존재하는 단어는 포함시키지 말자
Counter 객체로 만들고 most_common 메서드를 이용해서 가장 흔한 단어 하나만 찾자.
Last updated