728x90
프로그래머스 코딩 기초 트레이닝 DAY 3 - (2)
출처 - https://school.programmers.co.kr/learn/courses/30/lessons/181941
문제 | 문자들이 담겨있는 배열 arr가 주어집니다. arr의 원소들을 순서대로 이어 붙인 문자열을 return 하는 solution함수를 작성해 주세요.
입력 #1 | ["a","b","c"]
출력 #1 | "abc"
>> 풀이 <<
새로운 String을 만들고, for문을 이용하여 arr의 String형 원소들을 더해가는 방식으로 구현하려고 한다. 이 과정에서는 특별한 메소드가 필요하지 않았다.
class Solution {
public String solution(String[] arr) {
String answer = "";
for (String str : arr) {
answer += str;
}
return answer;
}
}
위 코드로 답을 도출하는 데에는 문제가 없었지만, 더해야하는 문자열이 많아질 경우에는 비효율적이다. String은 객체이며 변경이 불가능하므로 문자열끼리 연결을 할 때마다 새 문자열이 생성된다. 즉, 메모리를 많이 잡아먹게 된다는 뜻이다.
그래서 +로 문자열끼리 연결하는 것보다 StringBuilder를 이용해 "변경 가능한 문자열" 을 만들어주는 게 효율적일지도 모른다. StringBuilder 객체를 생성하고 append() 인자를 이용해 문자열을 붙여나간다.
class Solution {
public String solution(String[] arr) {
StringBuilder sb = new StringBuilder();
for (String s: arr) {
sb.append(s);
}
return sb.toString();
}
}
출력시에는 toString을 이용해 string타입으로 바꿔준다. 많은 문자열을 이어야 할 때 이용하면 좋을 거 같다.
'코딩테스트 > 프로그래머스 Lv.0' 카테고리의 다른 글
[프로그래머스] 조건문자열 - JAVA (0) | 2023.07.03 |
---|---|
[프로그래머스] 정수형 문자열로 변환 (int to String, String to int) - JAVA (0) | 2023.07.03 |
[프로그래머스] 문자열 곱하기 - JAVA (0) | 2023.07.02 |
[프로그래머스] 문자열 겹쳐쓰기 - JAVA (0) | 2023.07.02 |
[프로그래머스] 대소문자 바꿔서 출력 - JAVA (0) | 2023.07.02 |