본문 바로가기
JAVA/LeetCode

Leetcode 문자열 819 Most Common Word (java)

by 비전공자 기록광 2023. 11. 14.
반응형

https://leetcode.com/problems/most-common-word/description/

 

Most Common Word - LeetCode

Can you solve this real interview question? Most Common Word - Given a string paragraph and a string array of the banned words banned, return the most frequent word that is not banned. It is guaranteed there is at least one word that is not banned, and tha

leetcode.com

 

Given a string paragraph and a string array of the banned words banned, return the most frequent word that is not banned. It is guaranteed there is at least one word that is not banned, and that the answer is unique.
The words in paragraph are case-insensitive and the answer should be returned in lowercase.

 

⚠️ 금지 문자열 제외

⚠️ 소문자로 리턴

⚠️ 구두점은 무시

 

 

➡️ 입력 예제

Input: paragraph = "Bob hit a ball, the hit BALL flew far after it was hit.", banned = ["hit"]
Output: "ball"

 

 

Input: paragraph = "a.", banned = []
Output: "a"

 

 

✅ 풀이

1. 금지 문자 리스트 중복 제거해 생성 => Set

2. 입력 문자 리스트 처리

  • 구두점 생략
  • 소문자로 변환

3. 금지 문자 확인 후 문자 하나씩 갯수 세어 결과 저장 => Map<String, Integer>

4. 결과 Map 중 가장 숫자 Value 높은 문자 Key 반환

 

 

✨ 코드

class Solution {
    public String mostCommonWord(String paragraph, String[] banned) {
        // 금지 문자 리스트 생성
        Set<String> banSet = new HashSet<>(Arrays.asList(banned));
        // 입력 문자 리스트 처리
        String[] words = paragraph.replaceAll("\\W+", " ").toLowerCase().split(" ");
        
        Map<String, Integer> cnt= new HashMap<>();
        // 개수 세기
        for (String w : words) {
            if (!banSet.contains(w)) {
                cnt.put(w, cnt.getOrDefault(w, 0) + 1);
            }
        }
        return Collections.max(cnt.entrySet(), Map.Entry.comparingByValue()).getKey();
    }
}

 

 

💡 KeyPoint

  • 구두점 찾아내기
    • 정규식 [^A-Za-Z0-9] : 알파벳 대문자, 알파벳 소문자, 숫자가 아닌 모든 문자열
    • \\W+ : 워드 문자(알파벳 대문자, 알파벳 소문자, 숫자)가 아닌 모든 문자열

 

  • getOrDefault("단어", "출력할 단어") : 해당 단어가 Map에 존재하면 정해준 값 출력
    • getOrDefault키가 이미 존재할 경우 > 그 키의 값을 반환함 + 1
    • 키가 존재하지 않는 경우 > 그대로 0 반환 + 1

 


참고

https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000005441444

 

자바 알고리즘 인터뷰 with 코틀린 | 박상길 | 책만- 교보ebook

[이 책의 구성] [1부] ‘코딩 인터뷰를 준비하며’ 1장 ‘코딩 인터뷰 & 코딩 테스트’에서는 각각에 대한 소개와 어떻게 하면 시험을 잘 치를 수 있을지, 문제 풀이 외에도 타임아웃이나 예외 처

ebook-product.kyobobook.co.kr

코드

https://github.com/recordbuffer/Coding_Test/tree/main/Java_Algorithm

 

반응형

'JAVA > LeetCode' 카테고리의 다른 글

Leetcode 배열 42 Trapping Rain Water (java)  (1) 2023.11.18

댓글