Level. 0
문제
문자열 my_string과 정수 배열 index_list가 매개변수로 주어집니다.
my_string의 index_list의 원소들에 해당하는 인덱스의 글자들을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.
* 제한사항
- 1 ≤ my_string의 길이 ≤ 1,000
- my_string의 원소는 영소문자로 이루어져 있습니다.
- 1 ≤ index_list의 길이 ≤ 1,000
- 0 ≤ index_list의 원소 < my_string의 길이
풀이1. StringBuilder
class Solution {
public String solution(String my_string, int[] index_list) {
StringBuilder sb = new StringBuilder();
for(int i : index_list)
sb.append(my_string.charAt(i));
return sb.toString();
}
}
StringBuilder
StringBuilder sb = new StringBuilder();
- 자바에서 String객체는 변경이 불가능하기 때문에 하나의 문자열에 다른 문자열을 합칠경우 새로운 문자열이 생기게 되며, 이전 문자열은 가비지 컬렉터로 돌아가게 된다.
- 이렇게 문자의 덧셈이 많아지게 될 경우 메모리를 많이 사용하게 되는데, 이 때 고려해 볼 수 있는 것이 StringBuiler이다.
StringBuiler는 변경 가능한 문자열(가변문자열) 을 만들어 주어 문자열을 더 할 때 새로운 객체를 생성하는 것이 아니라 기존에 데이터에 더하는 방식을 사용한다.- appen() : 문자열을 덧붙인다.
- reverse() : 문자열을 뒤집는다
- toString() : String객체로 변환한다.
풀이2. Stream
import java.util.stream.*;
import java.util.Arrays;
class Solution {
public String solution(String my_string, int[] index_list) {
return Arrays.stream(index_list).mapToObj(i -> Character.toString(my_string.charAt(i))).collect(Collectors.joining());
}
}
https://school.programmers.co.kr/learn/courses/30/lessons/181915
'Algorithm > Programers - Java' 카테고리의 다른 글
[프로그래머스(Java)] 카운트 다운 / rangeClosed(), iterate() (0) | 2024.01.28 |
---|---|
[프로그래머스(Java)] 배열 비교하기 / Integer.compare (0) | 2024.01.28 |
[프로그래머스(Java)] 순서 바꾸기 (0) | 2024.01.21 |
[프로그래머스(Java)] 배열의 원소 삭제하기 / anyMatch() (0) | 2024.01.21 |
[프로그래머스(Java)] 홀수 vs 짝수 / iterate() (0) | 2024.01.14 |