programmers

[JAVA] ○ ad 제거하기

아잠만_ 2024. 3. 12. 19:41
문자열 배열 strArr가 주어집니다. 배열 내의 문자열 중 "ad"라는 부분 문자열을 포함하고 있는 모든 문자열을 제거하고 남은 문자열을 순서를 유지하여 배열로 return 하는 solution 함수를 완성해 주세요.

풀이1)

class Solution {
    public String[] solution(String[] strArr) {
    	//answer 배열길이 계산 선행
        int sum = 0;
        for(int i=0;i<strArr.length;i++){
            if(strArr[i].indexOf("ad")!=-1){
                sum++;
            }
        }
        //"ad" 포함안한 문자열 저장
        int j=0;
        String[] answer = new String[strArr.length-sum];
        for(int i=0;i<strArr.length;i++){
            if(strArr[i].indexOf("ad")==-1){
            answer[j]=strArr[i];
                j++;
            }
        }
        return answer;
    }
}

풀이2) Stream 등

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

class Solution {
    public String[] solution(String[] strArr) {
        List<String> list = Arrays.stream(strArr).filter(m -> !m.contains("ad")).collect(Collectors.toList());
        String[] answer  = new String[list.size()];
        list.toArray(answer);
        return answer;
    }
}

Stream

필터링(filtering) 및 맵핑(mapping) 등 원하는 결과를 만들어냄

생성하기

Name<변수타입> name = Arrays.stream(변수이름)

필터링

.filter(name -> name.contains("포함하는문자열"));

collect(Collectors.toList())

수정가능한 List로 받기 위해서는 stream에서 최종연산에 toList가 아니라 collect(Collectors.toList())를 사용해야한다