/ ALGORITHM

잘라서 배열로 저장하기

Algorithm 관련 포스팅

이 글은 프로그래머스의 잘라서 배열로 저장하기의 풀이를 정리한 것입니다.

문제 설명

문자열 my_str과 n이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.


제한사항

  • 1 ≤ my_str의 길이 ≤ 100
  • 1 ≤ n ≤ my_str의 길이
  • my_str은 알파벳 소문자, 대문자, 숫자로 이루어져 있습니다.

입출력 예

my_str n result
“abc1Addfggg4556b” 6 [“abc1Ad”, “dfggg4”, “556b”]
“abcdef123” 3 [“abc”, “def”, “123”]

입출력 예 설명

입출력 예 #1

  • “abc1Addfggg4556b” 를 길이 6씩 잘라 배열에 저장한 [“abc1Ad”, “dfggg4”, “556b”]를 return해야 합니다.

입출력 예 #2

  • “abcdef123” 를 길이 3씩 잘라 배열에 저장한 [“abc”, “def”, “123”]를 return해야 합니다.

유의사항

  • 입출력 예 #1의 경우 “abc1Addfggg4556b”를 길이 6씩 자르면 “abc1Ad”, “dfggg4” 두개와 마지막 “556b”가 남습니다. 이런 경우 남은 문자열을 그대로 배열에 저장합니다.

나의 풀이

  1. substring(int beginIndex, int endIndex)beginIndexi로 설정하기 위해 for문의 i를 자르고자 하는 길이만큼 증가하도록 설정
  2. substring(int beginIndex, int endIndex)endIndex를 변수end로 설정
  3. end가 문자열의 길이보다 작으면 i ≤ x < end 범위를, end가 문자열의 길이보다 크거나 같으면 i ≤ x < str.length() 범위를 잘라 ArrayList에 추가
  4. ArrayListString[]로 전환
import java.util.ArrayList;

class Solution {
    public String[] solution(String my_str, int n) {
        String[] answer = {};  
        ArrayList<String> answerArrList = new ArrayList();
        
        // 1.
        for (int i = 0; i < my_str.length(); i+=n) {

            // 2.
            int end = i + n;
            
            // 3.
            if (end < my_str.length()) {
                answerArrList.add(my_str.substring(i, end));
            } else {
                answerArrList.add(my_str.substring(i));
            }
        }
        
        // 4. 
        answer = answerArrList.toArray(new String[0]);
        return answer;
    }
}