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
'==4. 프로그래머스 & 코테문제== > Java 문제 풀이' 카테고리의 다른 글
[Java/프로그래머스 LV.0] 코딩 기초 트레이닝/문자열을 정수로 변환하기 (0) | 2024.08.03 |
---|---|
[Java/프로그래머스 LV.0] 코딩 기초 트레이닝/특정 문자열로 끝나는 가장 긴 부분 문자열 찾기 (0) | 2024.07.23 |
[Java/프로그래머스 LV.0] 코딩 기초 트레이닝/왼쪽 오른쪽 (0) | 2024.07.08 |
[Java/프로그래머스 LV.0] 코딩 기초 트레이닝/홀수 vs 짝수 (0) | 2024.07.07 |
[Java/프로그래머스 LV.0] 코딩 기초 트레이닝/ l로 만들기 (0) | 2024.07.02 |
댓글