프로그래머스 : 글자 이어 붙여 문자열 만들기

Digeut·2024년 3월 21일
0

프로그래머스

목록 보기
144/164

❔문제설명

문자열 my_string과 정수 배열 index_list가 매개변수로 주어집니다. my_string의 index_list의 원소들에 해당하는 인덱스의 글자들을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.

🤔아이디어

split을 이용해서 문자를 잘라 배열로 만든 다음 각각의 index_list에 해당하는 값을 add로 더해주면 되지 않을까?

❌틀린코드

import java.util.*;

class Solution {
    public String solution(String my_string, int[] index_list) {
        String answer = "";
        String[] strArr = my_string.split("");
        List<String> res = new ArrayList<>();
        
        for(int i = 0 ; i < my_string.length() ; i++){
            res.add(strArr[index_list[i]]);
        }
        
        answer = Arrays.toString(strArr);
        return answer;
    }
}

🙃오류


ArrayIndexOutOfBoundsException
정해진 배열의 크기보다 크거나 음수 index에 대한 요청이 있으면 생기는 예외


내가 my_string의 배열을 이용해서 반복문을 돌리고, index_list의 값을 이용해서 원소의 값을 가져오게 되니까 범위의 오류가 발생하게 된다. index는 0부터 시작하니까 예제처럼 strArr[5]의 값은 존재하지 않게 된다. -> my_string이 아니라, index_list를 반복문을 통해서 그 값을 가져와서 적용하면 어떻게 될까?

💡코드풀이

import java.util.*;

class Solution {
    public String solution(String my_string, int[] index_list) {
        String answer = "";
        String[] strArr = my_string.split("");
        List<String> res = new ArrayList<>();
        
        for(int idx : index_list){
            res.add(strArr[idx]);
        }
        
        answer = String.join("",res);
        return answer;
    }
}

answer = String.join("",res); : List형태를 문자열로 변환.

chatGPT에 물어보니 StringBuilder을 이용한 방법의 코드도 설명해줬다. List로 변환해서 다시 String으로 변환하는 과정을 거치지 않고 바로 String으로 만드는 방법인가보다.

import java.util.*;

class Solution {
    public String solution(String my_string, int[] index_list) {
        ⭐StringBuilder answer = new StringBuilder();
        for (int index : index_list) {
            if (index >= 0 && index < my_string.length()) {
                ⭐answer.append(my_string.charAt(index));
            }
        }
        return answer.toString();
    }
}
profile
개발자가 될 거야!

0개의 댓글