본문 바로가기
algorithm

[프로그래머스]잘라서 배열로 저장하기 , java

by skysline 2023. 3. 17.
반응형

`잘라서 배열로 저장하기`

문제 설명

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

입출력 예

"abc1Addfggg4556b" 를 길이 6씩 잘라 배열에 저장한 ["abc1Ad", "dfggg4", "556b"]를 return 해야 합니다.
"abcdef123" 를 길이 3씩 잘라 배열에 저장한 ["abc", "def", "123"]를 return 해야 합니다.


code

class Solution {
    public String[] solution(String my_str, int n) {
        String[] answer = new String[(int)Math.ceil((double)my_str.length()/n)];
        int idx =0;
        for (int i = 0; i < answer.length; i++) {
            answer[i] = (idx <= my_str.length()-n)? my_str.substring(idx, idx + n) : my_str.substring(idx);
            idx = idx + n;
        }
        return answer;
    }
}

Math.ceil((double)my_str.length()/n)

  • my_str을 n으로 나눈 결괏값의 올림값을 계산하며, 이 값은 answer배열의 길이가 됩니다.

idx

  • 문자열 my_str에서 추출할 문자열의 시작 인덱스를 나타내며, 처음에는 0으로 초기화됩니다.
  • idx는 이전 추출한 문자열의 시작 인덱스에 n을 더한 값이 되므로, 다음 반복문에서는 그다음 문자열의 시작 인덱스가 됩니다.

반복문에서는 answer배열의 길이만큼 반복하며, answer[i]에는 my_str에서 idx부터 n개의 문자열을 추출하여 저장합니다.

이때, (idx <= my_str.length()-n)조건을 만족하지 않으면, my_str의 마지막 남은 문자열을 추출하여 저장합니다.

예를 들어, my_str이 "HelloWorld"이고, n이 3일 경우, Math.ceil((double)my_str.length()/n)는 3이 되며, 
answer배열은 크기가 3인 배열이 됩니다. idx는 처음에는 0으로 초기화되며,
첫 번째 반복문에서는 answer[0]에 "Hel"이 저장됩니다.
두 번째 반복문에서는 idx는 3이 되며,
answer[1]에는 "loW"가 저장됩니다.
세 번째 반복문에서는 idx는 6이 되며,
answer[2]에는 "orld"가 저장됩니다.
마지막으로 answer배열인 ["Hel", "loW", "orld"]가 반환됩니다.

반응형

댓글