문제)
문자열 배열 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을 활용해서 배열 참조변수에 넘겨준다.
'프로그래머스' 카테고리의 다른 글
프로그래머스)옹알이(2)-자바 (0) | 2024.06.19 |
---|---|
프로그래머스,자바)자연수 뒤집어 배열로 만들기 (0) | 2024.04.17 |
자바) 문자열 섞기 (0) | 2024.04.16 |
자바) 문자열 내p와 y의 개수 (0) | 2024.04.01 |
자바,프로그래머스) 최댓값 만들기(1) (2) | 2024.03.08 |