본문 바로가기

코딩테스트/프로그래머스

[프로그래머스][JAVA] 잘라서 배열로 저장하기 (LV.0)

728x90
반응형

 문제 설명

문자열 my_str과 n이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.

 

 제한사항

• 1 ≤ my_str의 길이 ≤ 100
• 1 ≤ n ≤ my_str의 길이
• my_str은 알파벳 소문자, 대문자, 숫자로 이루어져 있습니다.

 

 입출력 예

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"가 남습니다. 이런 경우 남은 문자열을 그대로 배열에 저장합니다.

 


나의 풀이
import java.util.ArrayList;

class Solution {
    public String[] solution(String my_str, int n) {
        ArrayList<String> str = new ArrayList<>();
        int idx = 0;
        
        if(n == my_str.length()) {
            str.add(my_str.substring(0));
        } else {
            while(true) {
                str.add(my_str.substring(idx, (idx+n))); 
                
                idx += n;
                if(idx+n >= my_str.length()) {
                    str.add(my_str.substring(idx).trim());
                    break;
                }
            }
        }
        
        String[] answer = new String[str.size()];
            
        for(int i=0; i<str.size(); i++) {
            answer[i] = str.get(i);
        }            
        
        return answer;
    }
}

 

다른 사람의 풀이
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;
    }
}

 

728x90
반응형