본문 바로가기
코딩테스트 연습

ad 제거하기

by 신재은👩🏼‍💻 2024. 4. 11.

문제 설명

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

 

제한사항

  • 1 ≤ strArr의 길이 ≤ 1,000

 

입출력 예

strArr result
["and","notad","abcd"] ["and","abcd"]
["there","are","no","a","ds"] ["there","are","no","a","ds"]

import java.util.ArrayList;
import java.util.Arrays;

class Solution {
    public String[] solution(String[] strArr) {
        ArrayList<String> arrlist = new ArrayList<String>(Arrays.asList(strArr));
        arrlist.removeIf(str -> str.contains("ad"));
        
        String[] answer = arrlist.toArray(new String[arrlist.size()]);
        
        return answer;
    }
}


로직 완성 후 gpt한테 하나 하나 물어가며 작성했다.

 

가장 추천이 많은 풀이는 이것이었는데

 

import java.util.*;

 

class Solution {

    public String[] solution(String[] strArr) {

        return Arrays.stream(strArr).filter(s -> !s.contains("ad")).toArray(String[]::new);

    }

}

 

내 코드랑 비교해서 어떤 게 더 나은지(?) 궁금해서 gpt한테 물어봤다.

 

그랬더니 가독성, 간결성, 효율성 측면에서 두 번째 코드가 더 낫다고 말하더라.

세세한 퍼포먼스에서는 별 차이가 없어도 나는 이 답변을 통해 stream으로만 코테를 쳐도 되겠다는 강한 확신을 갖게 되었고

문제를 풀면서 앞으로는 오직 stream만 사용하고 stream API와 콜렉션에 대한 공부(정리)를 따로 해야겠다고 마음 먹었다.

'코딩테스트 연습' 카테고리의 다른 글

5명씩  (0) 2024.04.11
할 일 목록  (0) 2024.04.11
x 사이의 개수  (0) 2024.04.11
0 떼기  (0) 2024.04.10
배열 만들기 3  (0) 2024.04.10