배열의 유사도
https://school.programmers.co.kr/learn/courses/30/lessons/120903
- 두 배열을 순회하면서 각 배열에서 공통으로 나타나는 원소의 수를 찾는 문제이다. 여기서는 중복된 원소가 없다는 것이 보장되므로, 간단한 방법으로 원소를 확인하고 개수를 세어볼 수 있다.
- 문제 풀이
- 두 배열을 순회하며 서로 겹치는 원소를 찾고 개수를 세는 방식으로 구현할 수 있다. 이를 위해 HashSet을 사용하여 중복을 피하고, 겹치는 원소를 확인한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
import java.util.HashSet; class Solution { public int solution(String[] s1, String[] s2) { HashSet<String> set1 = new HashSet<>(); HashSet<String> set2 = new HashSet<>(); // s1 배열의 원소들을 set1에 추가 for (String s : s1) { set1.add(s); } // s2 배열의 원소들을 set2에 추가 for (String s : s2) { set2.add(s); } // set1과 set2에 공통으로 포함된 원소 수 계산 int count = 0; for (String s : set1) { if (set2.contains(s)) { count++; } } return count; } }
s1
의 각 원소가s2
에 있는지를 확인하고, 일치하는 원소의 개수를count
에 누적한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
class Solution { public int solution(String[] s1, String[] s2) { int count = 0; for (String s : s1) { for (String str : s2) { if (s.equals(str)) { count++; break; } } } return count; } }
s1
과s2
는 각각 문자열 배열이기 때문에contains
메서드를 직접 사용할 수 없다. 배열은 해당 메서드를 지원하지 않는다. 배열 내에 특정 값을 확인하려면 반복문을 사용하여 각 원소를 일일히 비교해야 한다. 코드를 수정해서 HashSet 등을 활용하여 배열 내에 공통된 값이 있는지 확인해야 한다.1 2 3 4 5 6 7 8 9 10 11 12
// 오답 class Solution { public int solution(String[] s1, String[] s2) { int count = 0; if (s1.contains(s2)) { count ++; } return count; } }
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.