문자열 my_str과 n이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.
제한사항 1 ≤ my_str의 길이 ≤ 100 1 ≤ n ≤ my_str의 길이 my_str은 알파벳 소문자, 대문자, 숫자로 이루어져 있습니다.
2) 예시
Result Table
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"가 남습니다.
이런 경우 남은 문자열을 그대로 배열에 저장합니다.
3) 풀이
1. 클래스 선언을 해줍니다
● class Solution {
클래스명은 대문자로 시작해야하고, 정답이라는 의미로 Solution이라는 단어를 사용하였습니다.
2. 문자열 my_str과 정수 n를 매개변수로 하는 solution 메소드를 선언합니다.
solution은 문자열 배열를 반환하므로 데이터타입을 String[]으로 합니다.
● public String[] solution(String my_str, int n) {
3. 우선 my_str의 문자열 길이를 strLength,
그리고 새롭게 만들 배열의 길이를 arrayLength로 정의합니다.
arrayLength는 n씩 나누었을 때 올림해주기 위해 (strLength -1)의 값에 n을 한번 더 더해준 것입니다.
● int strLength = my_str.length(); int arrayLength = (strLength + n -1) / n;
4. 정답이 될 문자열배열 answer를 생성하고, 그 길이는 arrayLength로 합니다
● String[] answer = new String[arrayLength];
5. 배열의 원소의 시작점start 와 끝점 end를 구합니다.
시작점은 n씩 나눠지니 i * n으로 합니다.
끝점은 시작점에서 n을 더한 값과 strLength(문자열길이)를 비교했을 때 더 작은 값으로 합니다.
이유는 start+n을 하였을 때 그 값이 문자열의 길이를 초과할 수 있기 때문에 제한을 두기 위함입니다.
substring메소드를 이용(substring(시작점,끝점)하면 그 사이 문자열만 추출됩니다.)하여 answer의 i번째 요소를 구합니다.
최종적으로 결과값 answer를 반환합니다.
● for(int i=0; i < arrayLength; i++){ int start = i * n; int end = Math.min(start + n, strLength); answer[i] = my_str.substring(start, end); }
return answer; } }
4) 코드
class Solution {
public String[] solution(String my_str, int n) {
int strLength = my_str.length();
int arrayLength = (strLength + n -1) / n;
String[] answer = new String[arrayLength];
for(int i=0; i < arrayLength; i++){
int start = i * n;
int end = Math.min(start + n, strLength);
answer[i] = my_str.substring(start, end);
}
return answer;
}
}
5) 느낀점
substring 메소드를 이용할 수 있는 좋은 기회였습니다.
다만 처음에 문제 해결을 어떻게 할지 굉장히 많은 고민이 있었습니다.
새로이 배열을 생성해야한다는점, StringBuilder를 이용해서 해결해보려했던점 등 고민이 많았던 문제였습니다.