잘라서 배열로 저장하기
문제 #
문제 설명을 적는다.
- 제한사항
나의 풀이 #
class Solution {
public String[] solution(String my_str, int n) {
StringBuilder sb = new StringBuilder(my_str);
int cnt = 1;
while(true) {
if(n*cnt+cnt <= sb.length()) {
sb.insert(n*cnt+cnt-1, " ");
cnt++;
} else break;
}
my_str = sb.toString();
String[] answer = my_str.split(" ");
return answer;
}
}
다른 사람의 풀이 #
// substring 이용1
class Solution {
public String[] solution(String my_str, int n) {
int resultCnt = (my_str.length() + n - 1) / n;
String[] answer = new String[resultCnt];
for (int i = 0; i < resultCnt; i++) {
int start = n * i;
int end = start + n >= my_str.length()? my_str.length(): start + n;
answer[i] = my_str.substring(start, end);
}
return answer;
}
}
// substring 이용2
class Solution {
public String[] solution(String my_str, int n) {
String[] answer = {};
if (my_str.length() % n == 0) answer = new String[my_str.length() / n];
else answer = new String[my_str.length() / n + 1];
for (int i = 0; i < answer.length; i++) {
answer[i] = (i * n + n <= my_str.length() - 1 ? my_str.substring(i * n, i * n + n) : my_str.substring(i * n));
}
return answer;
}
}
//List 이용
import java.util.*;
class Solution {
public String[] solution(String my_str, int n) {
List<String> list = new ArrayList<>();
String cut = "";
for(int i =0; i<my_str.length(); i++){
cut += my_str.charAt(i);
if(cut.length() == n || i+1 == my_str.length()){
list.add(cut);
cut = "";
}
}
String[] answer = new String[list.size()];
for(int i=0; i<list.size(); i++){
answer[i] = list.get(i);
}
return answer;
}
}
//List 및 Stream 이용
import java.util.List;
import java.util.ArrayList;
class Solution {
public String[] solution(String my_str, int n) {
List<String> answer = new ArrayList<>();
String str = "";
for(int i=0; i<my_str.length(); i++){
str += my_str.charAt(i);
if(str.length() == n || i == my_str.length()-1){
answer.add(str);
str = "";
}
}
return answer.stream().map(s -> s).toArray(String[]::new);
}
}
관련개념 학습 #
class Solution {
public String[] solution(String my_str, int n) {
String[] answer = my_str.split("(?<=\\G.{"+n+"})");
return answer;
}
}
-
str.substring
을 이용한다. -
str.charAt
을 이용한다. -
StringBuilder 혹은 StringBuffer를 이용한다.
-
배열의 크기를 미리 구한다.
-
크기가 가변적인 배열인 List를 이용한다. → 배열의 크기를 미리 구하는 대신 List배열에 넣은 후 배열로 변환하는 방식
-
str.split
를 이용한다. →sb.insert
혹은str.charAt
으로 공백(혹은 특문)이 포함 된 새로운 문자열을 만들어 자르는 방식