[프로그래머스] 잘라서 배열로 저장하기 – 자바


프로그래머스 “잘라서 배열로 저장하기” 문제 해결과정입니다.

잘라서 배열로 저장하기

문제설명

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


제한사항

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

입출력 예

my_strnresult
“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”가 남습니다. 이런 경우 남은 문자열을 그대로 배열에 저장합니다.

문제 해결과정

프로그래머스 코드

class Solution {
    public String[] solution(String my_str, int n) {
    	int num = (my_str.length() + n - 1) / n;
        String[] answer = new String[num];
        
        for(int i = 0; i < num; i++) {
        	int start = i * n;
        	int end = Math.min(start + n, my_str.length());
        	answer[i] = my_str.substring(start, end);
        }
        return answer;
    }
}
  1. 문자열을 나눌 횟수를 정하기 위해 문자열의 길이와 n을 더하구 1을 빼준 뒤 n으로 나누어준다. 만약 문자열의 길이를 n으로 그냥 나누어 주면 문자열의 길이가 n의 배수일 때는 딱 맞아 떨어지겠지만, 아닐 때에는 배열에 한 자리가 더 필요하다. 이를 방지한다.
  2. 배열을 1번에서 선언한 num의 길이로 정의해준다.
  3. 반복문을 통해 num번 만큼 반복한다. substring은 시작과 끝의 인덱스 번호로 사이의 문자열을 가져오는데 시작을 n의 배수로 정의한다. 끝은 유의사항을 참고하여 만약 마지막 문자열이 n보다 길이가 짧다면 마지막 문자열의 길이로 정의한다.

정리

  1. 문자열의 길이를 n으로 나누었을 때 나누어 떨어지는 것, 떨어지지 않는 것을 유의하여 num 정의.
  2. 반복문을 통해 n의 길이만큼 나누어줌. 이때 마지막 문자열은 n보다 길이가 짧으면 그대로 배열에 저장함.

댓글 남기기

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.