💬 문제 설명
문자열 my_str과 n이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.
🚫 제한 사항
- 1 ≤ my_str의 길이 ≤ 100
- 1 ≤ n ≤ my_str의 길이
- my_str은 알파벳 소문자, 대문자, 숫자로 이루어져 있습니다.
📢 입출력 예
👨🏫 입출력 예 설명
📃 제출 코드
class Solution {
public String[] solution(String my_str, int n) {
String[] answer = new String[my_str.length() % n == 0 ?
my_str.length() / n : my_str.length() / n + 1];
for (int i = 0; i < answer.length; i++) {
int start = i * n;
int end = (i + 1) * n;
if (my_str.length() >= end) {
answer[i] = my_str.substring(start, end);
} else {
answer[i] = my_str.substring(start);
}
}
return answer;
}
}
✏ 해결방법 & 배운점
먼저 `answer` 배열의 길이를 설정하는 부분에서, 주어진 문자열 `my_str`의 길이가 n으로 나누어 떨어지는지 여부에 따라 배열의 길이를 결정했습니다. 만약 나누어 떨어진다면 배열의 길이는 `my_str.length() / n` 이 되고, 그렇지 않으면 배열의 길이는 `my_str.length() / n + 1`으로 하였습니다.
이후에는 배열의 길이만큼 반복하며 각 반복에서는 현재 부분 문자열의 시작 인덱스(start)와 끝 인덱스(end)를 계산하여 변수에 저장했습니다. 이 때, start는 i * n으로 계산하고, end는 (i + 1) * n으로 계산했습니다.
반복문 내에서는 my_str의 길이가 end보다 크거나 같은지를 확인하여 부분 문자열을 추출합니다. my_str의 길이가 end보다 크거나 같으면 `my_str.substring(start, end)을 사용하여 부분 문자열을 추출하고, 그렇지 않으면 my_str.substring(start)를 사용하여 나머지 부분 문자열을 추출합니다. 이렇게 추출된 부분 문자열은 answer 배열에 저장되어 최종적으로 반환하여 문제를 해결하였습니다.
'PS > 프로그래머스 입문 100제' 카테고리의 다른 글
[프로그래머스] LV.0 영어가 싫어요 - 자바 [76/100] (0) | 2024.06.28 |
---|---|
[프로그래머스] LV.0 문자열 계산하기 - 자바 [75/100] (0) | 2024.06.28 |
[프로그래머스] LV.0 이진수 더하기 - 자바 [73/100] (0) | 2024.06.28 |
[프로그래머스] LV.0 소인수 분해 - 자바 [72/100] (0) | 2024.06.28 |
[프로그래머스] LV.0 컨트롤 제트 - 자바 [71/100] (0) | 2024.06.28 |