본문 바로가기

Algorithm/Programers - Java

[프로그래머스(Java)] 글자 이어 붙여 문자열 만들기 / StringBuilder

 

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