극동대학교\AI컴퓨터공학과\JAVA/프로그래머스 코딩 기초 트레이닝

[프로그래머스, LV.0] ad 제거하기

sundori 2024. 1. 6. 21:59

목차

    #1 ad 제거하기

    문제설명

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

    제한사항

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

    입출력 예

    strArr result
    {"and","notad","abcd"} {"and","abcd"}
    {"there","are","no","a","ds"} {"there","are","no","a","ds"}

    입출력 예 설명

    입출력 예 #1

    • 1번 인덱스의 문자열인 "notad"는 부분 문자열로 "ad"를 가집니다. 따라서 해당 문자열을 제거하고 나머지는 순서를 유지하여 ["and", "abcd"]를 return 합니다.

    입출력 예 #2

    • "ad"가 부분 문자열로 들어간 문자열이 존재하지 않습니다. 따라서 원래 배열을 그대로 return 합니다.

    #2 알고리즘 및 코드

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    public class Main {
        public static void main(String[] args) {
            String[] strArr = {"and","notad","abcd"};
            Solution sl = new Solution();
    
            System.out.println(Arrays.toString(sl.solution(strArr)));
        }
    }
    class Solution {
        public String[] solution(String[] strArr) {
            List<String> stringList = new ArrayList<>();
            for(int i = 0; i < strArr.length; i++){
                if(strArr[i].contains("ad")){
                    continue;
                }else{
                    stringList.add(strArr[i]);
                }
            }
            return stringList.toArray(new String[0]);
        }
    }
    class Solution {
        public String[] solution(String[] strArr) {
            return Arrays.stream(strArr)
                    .filter(s -> !s.contains("ad"))
                    .toArray(String[]::new);
        }
    }
    • 이번 문제는 이전 문제보다 난이도가 훨 쉽다.
    • 그저 주어진 문자열 배열을 순회하면서 "ad"가 포함되어 있지 않은 문자열만 뺀 문자열을 반환하면 되는 것이다.