[Java] 프로그래머스 잘라서 배열로 저장하기
문제 설명
문자열 my_str과 n이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ my_str의 길이 ≤ 100
- 1 ≤ n ≤ my_str의 길이
- my_str은 알파벳 소문자, 대문자, 숫자로 이루어져 있습니다.
입출력 예
입출력 예 설명
입출력 예 #1
- "abc1Addfggg4556b" 를 길이 6씩 잘라 배열에 저장한 ["abc1Ad", "dfggg4", "556b"]를 return해야 합니다.
입출력 예 #2
- "abcdef123" 를 길이 3씩 잘라 배열에 저장한 ["abc", "def", "123"]를 return해야 합니다.
코드 설명
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class Solution {
public String[] solution(String my_str, int n) {
int cnt = my_str.length() / n;
if (my_str.length() % n > 0) {
cnt++;
}
String[] answer = new String[cnt];
for (int i = 0; i < cnt - 1; i++) {
String a = my_str.substring(0, n);
my_str = my_str.substring(n);
answer[i] = a;
}
answer[cnt - 1] = my_str;
return answer;
}
// public static void main(String[] args) {// Scanner 방식
// Solution T = new Solution();
// Scanner sc = new Scanner(System.in);
// String my_str = sc.next();
// int n = sc.nextInt();
// for(String x : T.solution(my_str, n)) {
// System.out.print(x + " ");
// }
// sc.close();
// }
public static void main(String[] args) throws IOException {// BufferedReader 방식
Solution T = new Solution();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String my_str = br.readLine();
int n = Integer.parseInt(br.readLine());
for (String x : T.solution(my_str, n)) {
System.out.println(x + " ");
}
br.close();
}
}
ex.) my_str = abcdefg, n = 2 일 때
int cnt = my_str.length() / n
cnt = my_str의 길이 / n 만큼 지정 7 / 2 = 3
if (my_str.length() % n > 0) {
cnt++;
}
만약 my_str의 길이 % n 이 0보다 크면 cnt를 1 증가 , 7 % 2 = 1
cnt = 4
String[] answer = new String[cnt];
answer 배열에 cnt 만큼 저장가능, new String[4]
for (int i = 0; i < cnt - 1; i++) { // 0 ~ cnt-1 전 까지 반복, 0 ~ 2 까지 반복
String a = my_str.substring(0, n); // a = my_str.substring(0, n) 저장, a = my_str.substring(0, 2) ab,cd,ef
my_str = my_str.substring(n); // my_str = n까지 자름, my_str = cdefg, my_str = efg, my_str = g
answer[i] = a; // arr[i] = a값 , arr[0] = ab, arr[1] = cd, arr[2] = ef
}
answer[cnt - 1] = my_str;
answer[cnt-1] (마지막 배열은 따로 저장) = 남은 my_str 값 answer[3] = g