티스토리 뷰

728x90

문제 설명

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

 

 

입출력 예

 

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

 

https://school.programmers.co.kr/learn/courses/30/lessons/120913

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


 

문제 해결 과정

 

문자열을 부분적으로 자르는 substring (start index, end index) 를 이용하면 쉽게 문제를 해결 할 수 있었다.

 

배열 길이를 먼저 선언했더니 index 오류가 발생하여 index 를 계산 하여 그 뒤에 배열을 선언했다.

ArrayList 를 이용하면 배열 길이와 상관없이 문자열을 다 자르고 ArrayList 크기 만큼 배열을 새로 생성해 결과를 도출 하는 방법도 있을 것 같다는 생각이 들었다.

 

반복문에서 문자열을 자르는 인덱스를 어떤 변수를 이용할지도 생각해야하는 부분이다.

잘라야하는 문자열의 길이는 n 이며, 문자열의 시작을 len 이라고 하면 len 은 len + n 만큼 계속 업데이트가 되어야한다.

 

 

 

 

class Solution {
    public String[] solution(String my_str, int n) {
        
        int arrLen = 0;

        if(my_str.length() % n ==0){
            arrLen = my_str.length() / n;
        }
        else{
            arrLen = my_str.length() / n + 1;
        }
        
        String[] result = new String[arrLen];

        int len = 0;
        int i=0;

        while (true){
            if(len == my_str.length()){
                break;
            }
            if(len+n > my_str.length()){
                result[i] = my_str.substring(len, my_str.length());
                break;
            }
            result[i] = my_str.substring(len, len+n);
            i++;
            len = len + n;
        }
        
        return result;
    }
}

 

 

 

 

 

728x90