알고리즘

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

개발자 박현준 2023. 1. 31. 20:11
728x90

문제 설명

문자열 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

728x90