코딩테스트 풀이/JAVA
[LeetCode/Easy] 2085. Count Common Words With One Occurrence
무지맘
2023. 6. 21. 12:17
1. Input
1) String[] words1
2) String[] words2
2. Output
1) words1과 word2에 공통적으로 나타나는 단어 중 각 배열에 1번씩만 나타나는 단어의 수를 반환
3. Constraint
1) 1 <= words1.length, words2.length <= 1000
2) 1 <= words1[i].length, words2[j].length <= 30
3) 두 배열의 단어들은 영어 소문자로 이루어져 있다.
4. Example
Input: words1 = ["leetcode","is","amazing","as","is"], words2 = ["amazing","leetcode","is"] -> Output: 2
설명: 두 배열에 모두 나타나는 단어는 "leetcode", “is", "amazing"의 세 단어이다.
- “leetcode": 두 배열에 각각 1번, 1번 나타나므로 OK
- "is": 두 배열에 각각 2번, 1번 나타나므로 X
- "amazing": 두 배열에 각각 1번, 1번 나타나므로 OK
- 따라서 2를 반환한다.
5. Code
1) 첫 코드(2023/06/21)
class Solution {
public int countWords(String[] words1, String[] words2) {
HashMap<String, Integer> m1 = new HashMap<>();
for(String s : words1)
m1.put(s, m1.getOrDefault(s,0)+1);
List<String> list1 = new ArrayList<>();
for(String s : m1.keySet())
if(m1.get(s)==1) list1.add(s);
HashMap<String, Integer> m2 = new HashMap<>();
for(String s : words2)
m2.put(s, m2.getOrDefault(s,0)+1);
List<String> list2 = new ArrayList<>();
for(String s : m2.keySet())
if(m2.get(s)==1) list2.add(s);
int count = 0;
for(String s : list1)
if(list2.contains(s)) count++;
return count;
}
}
- 10%, 24%
- 다시 풀어보고 싶은데 아이디어가..