
내가 생각했을때 문제에서 원하는부분
문자열 배열 strArr가 주어집니다.
배열 내의 문자열 중 "ad"라는 부분 문자열을 포함하고 있는 모든 문자열을 제거하고 남은 문자열을 순서를 유지하여 배열로 return 하는 solution 함수를 완성해 주세요.
내가 이 문제를 보고 생각해본 부분
solution 메서드 내에서 ArrayList<String> resultList = new ArrayList<>();로 결과를 저장할 리스트를 생성한다.
배열은 크기 변경이 어려우므로, 리스트를 활용해 동적으로 문자열을 저장하기 위함이다.
for (String str : strArr) 반복문을 통해 입력받은 문자열 배열의 각 원소를 순서대로 검사한다.
if (!str.contains("ad")) 조건문으로 현재 문자열 str에 "ad"가 포함되어 있지 않은 경우에만 리스트에 추가한다.
이는 "ad"가 포함된 문자열을 걸러내 제거하기 위함이다.
반복문 종료 후, resultList.toArray(new String[0])를 호출하여 리스트를 다시 배열로 변환해서 반환한다.
new String[0]은 반환 배열 타입을 명시하는 역할을 한다.
main 메서드에서는 두 가지 입출력 예를 테스트한다.
첫 번째 예제 {"and", "notad", "abcd"}에서 "notad"가 "ad"를 포함하므로 제거되고, 나머지 "and"와 "abcd"가 출력된다.
두 번째 예제 {"there", "are", "no", "a", "ds"}에서는 "ad"가 부분 문자열로 포함된 문자열이 없으므로 입력배열 그대로 출력된다.
출력 시 Arrays.toString()으로 배열 전체를 한 줄 문자열 형태로 출력한다.
코드로 구현
import java.util.ArrayList;
class Solution {
public String[] solution(String[] strArr) {
ArrayList<String> resultList = new ArrayList<>();
for (String str : strArr) {
if (!str.contains("ad")) {
resultList.add(str);
}
}
return resultList.toArray(new String[0]);
}
}
프로그래머스 코드
package programmers;
import java.util.ArrayList;
import java.util.Arrays;
// 프로그래머스 ad 제거하기
public class Main75 {
public static String[] solution(String[] strArr) {
ArrayList<String> resultList = new ArrayList<>();
for (String str : strArr) {
// "ad"를 포함하지 않는 문자열만 리스트에 추가
if (!str.contains("ad")) {
resultList.add(str);
}
}
// ArrayList를 String 배열로 변환하여 반환
return resultList.toArray(new String[0]);
}
public static void main(String[] args) {
// 입출력 예 1
String[] input1 = {"and", "notad", "abcd"};
String[] result1 = solution(input1);
System.out.println(Arrays.toString(result1));
// 출력: [and, abcd]
// 입출력 예 2
String[] input2 = {"there", "are", "no", "a", "ds"};
String[] result2 = solution(input2);
System.out.println(Arrays.toString(result2));
// 출력: [there, are, no, a, ds] ("a"와 "ds"는 각각 분리되어 있어 "ad"를 포함하지 않으므로 그대로 유지됨)
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.