문제 설명
두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ s1, s2의 길이 ≤ 100
- 1 ≤ s1, s2의 원소의 길이 ≤ 10
- s1과 s2의 원소는 알파벳 소문자로만 이루어져 있습니다
- s1과 s2는 각각 중복된 원소를 갖지 않습니다.
입출력 예

입출력 예 설명
입출력 예 #1
- "b"와 "c"가 같으므로 2를 return합니다.
입출력 예 #2
- 같은 원소가 없으므로 0을 return합니다.
내가 풀이한 방법
class Solution {
public int solution(String[] s1, String[] s2) {
int answer = 0;
for(int i =0; i<s1.length; i++){
for(int j =0; j<s2.length; j++){
if(s1[i].equals(s2[j])){
answer++;
}
}
}
return answer;
}
}
다른 사람이 풀이한 방법1
import java.util.*;
class Solution {
public int solution(String[] s1, String[] s2) {
Set<String> set = new HashSet<>(Arrays.asList(s1));
return (int)Arrays.stream(s2).filter(set::contains).count();
}
}
다른 사람이 풀이한 방법2
import java.util.HashSet;
import java.util.List;
class Solution {
public int solution(String[] s1, String[] s2) {
int answer = 0;
HashSet<String> set = new HashSet<>(List.of(s1));
for (String s : s2) {
if(set.contains(s)){
answer++;
}
}
return answer;
}
}
다른 사람들의 코드를 보니 HashSet을 사용한 방법이 꽤 있었다.
그런데 s1배열을 초기값으로 저장할 때 Arrays.asList()를 사용한 사람도 있고 List.of()를 사용한 사람도 있었는데 이 두 개의 차이점이 무엇인지 궁금했다.
자바에서 Array를 List로 변환하기 위해서는 Arrays.asList(array)를 사용하는데 Java9버전부터는 List.of(array)를 도입했다고 한다.
두 개의 차이점은 크게 아래처럼 있다는 것을 알 수 있었다.
- Arrays.asList()는 크고 동적인 데이터에 사용하고, List.of()는 작고 변경되지 않는 데이터의 경우 사용합니다.
- List.of()는 필드 기반 구현이 있고, 내부적으로 힙 공간을 덜 사용하기에 요소 자체가 필요하다면 List.of()가 적절합니다.
- Arrays.asList()는 변경이 가능하고 thread safety 하지 않고, List.of()는 불변하고 thread safety합니다.
- Arrays.asList()는 null 요소를 허용하고 List.of()는 null 요소를 허용하지 않습니다.
- Arrays.asList(), List.of() 모두 크기는 변경할 수 없다. 크기를 바꾸려면 Collections을 생성해서 요소의 값을 옮겨야 합니다.
출처
https://jaehoney.tistory.com/144
Java - Arrays.asList vs List.of 차이 (완벽 정리)!
Arrays.asList() / List.of 자바에서 Array를 List으로 변환하기 위해서는 Arrays.asList(array)를 사용합니다. Java 9 버전 부터는 List.of(array)라는 새로운 팩토리 메소드를 도입했습니다. 차이점은 무엇일까요 ?
jaehoney.tistory.com
'Java > 프로그래머스' 카테고리의 다른 글
[프로그래머스/JAVA] 가운데 글자 가져오기 (2) | 2023.09.15 |
---|---|
[프로그래머스/JAVA] 핸드폰 번호 가리기 (2) | 2023.09.14 |
[프로그래머스/JAVA] 정수 제곱근 판별 (2) | 2023.09.13 |
[프로그래머스/JAVA] 문자 반복 출력하기 (0) | 2023.09.12 |
[프로그래머스/JAVA] 조건에 맞게 수열 변환하기 1 (1) | 2023.09.11 |
댓글