프로그래머스
프로그래머스,자바)ad제거하기
Jr.고래
2024. 4. 17. 20:03
문제)
문자열 배열 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"] |
정답)
class Solution {
public String[] solution(String[] strArr) {
StringBuffer sb = new StringBuffer();
for(String str : strArr){
if(str.contains("ad")){
}else{
sb.append(str+" ");
}
}
String[] answer = (sb.toString()).split(" ");
return answer;
}
}
해설)
솔직히 문제는 어렵지 않았다. 제한사항이 없어도 풀 수 있었고, 그러나 문제는 for문을 2번 돌리는 풀이를 할것이냐 더 효율적인 방법으로 할 것이냐? 이 고민을 하는데 오래 걸렸던것 같다.
일반적인 방식으로 for문을 2번 돌려야 하는 이유는 배열의 크기를 정하기 위해서이다.
그러나 for문 2번 돌려서 푸는건 아무나 다 할 수있을거 같아서 다른 방식으로 풀었다.
for 문을 돌면서 StringBuffer 객체의 메서드를 이용해서 문자열을 집어 넣는다.
그리고 StringBuffer를 String으로 변환한 뒤 미리 " " 로 구분해둔 것을 split을 활용해서 배열 참조변수에 넘겨준다.