728x90
반응형
문제 설명
두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ s1, s2의 길이 ≤ 100
- 1 ≤ s1, s2의 원소의 길이 ≤ 10
- s1과 s2의 원소는 알파벳 소문자로만 이루어져 있습니다
- s1과 s2는 각각 중복된 원소를 갖지 않습니다.
입출력 예
s1 | s2 | result |
["a", b", "c"] | ["com", "b", "d", "p", "c"] | 2 |
["n", "omg"] | ["m", "dot"] | 0 |
입출력 예 #1
- "b"와 "c"가 같으므로 2를 return합니다.
입출력 예 #2
- 같은 원소가 없으므로 0을 return합니다.
[나의 풀이]
class Solution {
public int solution(String[] s1, String[] s2) {
int cnt = 0;
for (String el1 : s1) {
for (String el2 : s2) {
if (el1.equals(el2)) {
cnt++;
}
}
}
return cnt;
}
}
[풀이과정]
풀이할 가치가 없는... 코드.....ㅜㅜ
[다른 풀이]
import java.util.
class Solution {
public int solution(String[] s1, String[] s2) {
List<String> s2List = Arrays.asList(s2);
return (int)Stream.of(s1).filter(s2List::contains).count;
}
}
List의 contains()와 filter를 활용
- Arrays.asList()를 활용하여 배열을 리스트로 변환
- Stream의 filter()를 활용하여 조건지정
- List의 contains()를 활용하여 현재의 Stream 요소가 s2List 요소에 존재하는지 체크
- true의 개수를 count한다.
[리팩토링]
import java.util.Arraysl
class Solution {
public int Solution(String[] s1, String[] s2) {
return (int) Arrays.stream(s1).filter(el1 -> Arrays.asList(s2).contains(el1)).count();
}
}
위와같이 한줄처리 가능
728x90
반응형
'코딩테스트 - 프로그래머스 > Lv. 0' 카테고리의 다른 글
[54] JAVA 머쓱이보다 키 큰 사람 (2) | 2023.11.21 |
---|---|
[53] JAVA 자릿수 더하기 (1) | 2023.11.21 |
[51] JAVA 배열의 원소만큼 추가하기 (0) | 2023.11.20 |
[50] JAVA 길이에 따른 연산 (0) | 2023.11.20 |
[49] JAVA 원하는 문자열 찾기 (0) | 2023.11.20 |