[Leetcode/Easy] 가장 흔한 단어 (819. Most Common Word, Swift)
2024. 6. 29. 15:58ㆍAlgorithm
https://leetcode.com/problems/most-common-word/description/
🤔 문제 설명
paragraph에서 금지된 단어를 제외하고, 가장 빈번하게 등장하는 단어를 출력하세요.
paragraph의 단어는 대소문자를 구분하지 않으며, 구두점(마침표, 쉼표 등) 또한 무시합니다. 답은 소문자로 반환해야 합니다.
paragraph = "Bob hit a ball, the hit BALL flew far after it was hit."
banned = ["hit"]
// "ball"
💡 풀이
사용되는 내부 메서드가 많아서 그렇지 풀이 과정은 단순하다.
한 문장으로 되어있는 것을 단어별로 구분 -> 소문자 변환 + 구두점 무시 -> 단어별로 빈번 횟수 count -> 가장 많은 count인 단어 return 순으로 해결했다.
이 방식에서 사용된 Swift 메서드를 여기서 한번 정리해보도록 하겠다.
- string.lowercased() : 모든 String의 문자를 소문자로 변환한 새로운 문자열을 return하는 메서드
- string.replacingOccurrences(of:, with:) : String에서 of에 지정된 문자열을 with에 지정된 문자열로 반환한 새로운 문자열을 return하는 메서드
- string.components(separatedBy:) : separatedBy에 지정된 문자 Set을 기준으로 String을 분리해서 [String] 형태로 반환
- joined() : Array의 각 요소를 연결해서 하나의 String으로 반환하는 메서드
- contains() : 특정 문자열이나 문자를 포함하고 있는지 확인하는 메서드
🧑🏻💻 코드 (Swift ver.)
class Solution {
func mostCommonWord(_ paragraph: String, _ banned: [String]) -> String {
var wordCheckDict = [String: Int]()
// 단어 처리(소문자 + 공백 변환) & 구분(공백 기준)
let words = paragraph.lowercased().replacingOccurrences(of: ",", with: " ").split(separator: " ")
// 단어 반복하면서 갯수 체크
for word in words {
var newWord = word.components(separatedBy: ["!", "?", "'", ",", ";", "."]).joined()
// 딕셔너리에 등록된 word가 아닌 경우 + banned 단어가 아닌 경우 -> 새롭게 딕셔너리 카운트 추가
if (wordCheckDict[newWord] == nil && !banned.contains(newWord)) {
wordCheckDict[newWord] = 1
} else {
if let count = wordCheckDict[newWord] { wordCheckDict[newWord] = count + 1 }
}
}
// 가장 자주 등장하는 단어 찾기
var mostCommonWord = ""
var maxCount = 0
for (word, count) in wordCheckDict {
if count > maxCount {
mostCommonWord = word
maxCount = count
}
}
return mostCommonWord
}
}
'Algorithm' 카테고리의 다른 글
[Leetcode/Easy] 두 수의 합 (1. Two Sum, Swift) (1) | 2024.07.01 |
---|---|
[Leetcode/Medium] 그룹 애너그램 (49. Group Anagrams, Swift) (0) | 2024.06.30 |
[Leetcode/Medium] 로그 파일 재정렬 (937. Reorder Log Files, Swift) (0) | 2024.06.29 |
[Leetcode/Easy] 문자열 뒤집기 (344. Reverse String, Swift) (0) | 2024.06.28 |
[Leetcode/Easy] 유효한 팰린드롬 (125. Valid Palindrome, Swift) (0) | 2024.06.27 |