본문 바로가기
4.2 프로그래머스 & 코테문제/Java 풀이

[Java/프로그래머스 LV.0] 코딩 기초 트레이닝/ ad 제거하기

by Dohi._. 2024. 7. 22.
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/181870

 

문제설명

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

제한사항

 

  • 1 ≤ strArr의 길이 ≤ 1,000
    • 1 ≤ strArr의 원소의 길이 ≤ 20
    • strArr의 원소는 알파벳 소문자로 이루어진 문자열입니다.

풀이

 

 

import java.util.ArrayList;

class Solution {
    public String[] solution(String[] strArr) {
        ArrayList<String> answer = new ArrayList<>();
        
        for (String str : strArr) {
            if (!str.contains("ad")) {
                answer.add(str);
            }
        }
        //return answer.toArray(new String[answer.size()]);
        //return answer.toArray(new String[0]);
        //String[]::new는 필요한 크기의 String 배열을 생성하는 배열 생성자 참조
        return answer.toArray(String[]::new );  
        
    }
}

 

 

들어간 메소드 정리

str1.contains(str2) : 문자열 1에 문자열2가 존재하는지 확인 (boolean)

String[]::new  : size->new String[size]라는 의미의 람다식 

List.toArray(Object[])

해당 메소드에 다양한 값으로 적어놨었습니다.

해당 메소드는 아래의 규칙으로 이루어집니다.

1. List를 toArray 메서드에 매개변수로 넘어온 배열 객체의 length만큼의 배열로 전환시킨다.
2. 만약 리스트의 size >= 배열의 lenght 일경우 리스트의 size로 배열길이를 만들어 반환
3. 반대로 리스트의 size  < 배열의 lenght 일경우 배열의 lenght 로 배열길이를 만들어 반환

 

따라서 new String[0]의 경우는 2번의 경우를 노리고 하는 것으로 리스트size만큼 배열 길이를 반환합니다

728x90

댓글