반응형
[프로그래머스] Java 코딩테스트 연습 - ad 제거하기
문제 출처
https://school.programmers.co.kr/learn/courses/30/lessons/181870
문제
문자열 배열 strArr가 주어집니다. 배열 내의 문자열 중 "ad"라는 부분 문자열을 포함하고 있는 모든 문자열을 제거하고 남은 문자열을 순서를 유지하여 배열로 return하는 solution함수를 완성해 주세요.
풀이
문제를 잘못 이해하고 문자열에서 "ad" 만 삭제해서 틀려버린 답,,
class Solution {
public String[] solution(String[] strArr) {
String[] answer = new String[strArr.length];
for (int i = 0; i < strArr.length; i++) {
answer[i] = strArr[i].replaceAll("ad", "");
}
return answer;
}
}
테스트 1
입력값 〉 ["and", "notad", "abcd"]
기댓값 〉 ["and", "abcd"]
실행 결과 〉 실행한 결괏값 ["and","not","abcd"]이 기댓값 ["and","abcd"]과 다릅니다.
테스트 2
입력값 〉 ["there", "is", "not", "a", "d"]
기댓값 〉 ["there", "is", "not", "a", "d"]
실행 결과 〉 테스트를 통과하였습니다.
"ad"가 포함된 모든 문자열을 삭제하면 배열의 크기가 바뀌게 되는데, 그 크기를 알 수 없어서 List를 사용했다. List가 크기 조정에 유연하기 때문이다.
for문으로 각 문자열을 순회하며 "ad"를 포함하고 있지 않은 문자열들을 add() 메서드로 answer에 저장했다.
answer를 List에서 다시 배열로 변환한 뒤 return.
for (String str : strArr)
↕ 같은 의미
for (int i = 0; i < strArr.length; i++) {
String str = strArr[i];
}
소스코드
import java.util.List;
import java.util.ArrayList;
class Solution {
public String[] solution(String[] strArr) {
List<String> answer = new ArrayList<>();
for (String str : strArr) {
if (!str.contains("ad")) {
answer.add(str);
}
}
return answer.toArray(new String[0]);
}
}
반응형
'코딩테스트연습 > [프로그래머스] Java' 카테고리의 다른 글
[프로그래머스] Java 코딩테스트 연습 - 문자열 잘라서 정렬하기 (2) | 2023.06.24 |
---|---|
[프로그래머스] Java 코딩테스트 연습 - x 사이의 개수 (2) | 2023.06.24 |
[프로그래머스] Java 코딩테스트 연습 - 공백으로 구분하기 2 (2) | 2023.06.23 |
[프로그래머스] Java 코딩테스트 연습 - 공백으로 구분하기 1 (2) | 2023.06.23 |
[프로그래머스] Java 코딩테스트 연습 - 특정한 문자를 대문자로 바꾸기 (2) | 2023.06.23 |