프로그래머스 ad 제거하기

KIMYEONGJUN·5일 전
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

문자열 배열 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"를 포함하지 않으므로 그대로 유지됨)
    }
}

위에 있는 코드를 변경한 코드

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글