새소식

Programmers Coding Test/Java

[프로그래머스 120913] Java - 코딩테스트 입문 / 잘라서 배열로 저장하기

  • -

 

잘라서 배열로 저장하기

 

 

 

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

 

프로그래머스

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

programmers.co.kr

 

 

 

1)  문제

문자열 my_str과 n이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ my_str의 길이 ≤ 100
1 ≤ n ≤ my_str의 길이
my_str은 알파벳 소문자, 대문자, 숫자로 이루어져 있습니다.

 

 

 

2)  예시

 

 

Result Table
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"가 남습니다.

이런 경우 남은 문자열을 그대로 배열에 저장합니다.

 

 

 

 

3)  풀이

 

 

1. 클래스 선언을 해줍니다

● class Solution {

클래스명은 대문자로 시작해야하고, 정답이라는 의미로 Solution이라는 단어를 사용하였습니다.

 

 

 

 

2. 문자열 my_str과 정수 n를 매개변수로 하는 solution 메소드를 선언합니다.

solution은 문자열 배열를 반환하므로 데이터타입을 String[]으로 합니다.

●      public String[] solution(String my_str, int n) {

 

 

 

3. 우선 my_str의 문자열 길이를 strLength,

    그리고 새롭게 만들 배열의 길이를 arrayLength로 정의합니다.

    arrayLength는 n씩 나누었을 때 올림해주기 위해 (strLength -1)의 값에 n을 한번 더 더해준 것입니다.

●      int strLength = my_str.length();
        int arrayLength = (strLength + n -1) / n;
        

 

 

4. 정답이 될 문자열배열 answer를 생성하고, 그 길이는 arrayLength로 합니다

●       String[] answer = new String[arrayLength];

 

 

 

 

5. 배열의 원소의 시작점start 와 끝점 end를 구합니다.

시작점은 n씩 나눠지니 i * n으로 합니다.

끝점은 시작점에서 n을 더한 값과 strLength(문자열길이)를 비교했을 때 더 작은 값으로 합니다.

이유는 start+n을 하였을 때 그 값이 문자열의 길이를 초과할 수 있기 때문에 제한을 두기 위함입니다.

 

substring메소드를 이용(substring(시작점,끝점)하면 그 사이 문자열만 추출됩니다.)하여 answer의 i번째 요소를 구합니다.

 

최종적으로 결과값 answer를 반환합니다.

●   for(int i=0; i < arrayLength; i++){
            int start = i * n;
            int end = Math.min(start + n, strLength);
            answer[i] = my_str.substring(start, end);
        }
        
        return answer;
    }
}

 

 

 

 

 

4)  코드

 

class Solution {
    public String[] solution(String my_str, int n) {
        int strLength = my_str.length();
        int arrayLength = (strLength + n -1) / n;
        
        String[] answer = new String[arrayLength];
        
        for(int i=0; i < arrayLength; i++){
            int start = i * n;
            int end = Math.min(start + n, strLength);
            answer[i] = my_str.substring(start, end);
        }
        
        return answer;
    }
}

 

 

 

 

 

 

 

5)  느낀점

substring 메소드를 이용할 수 있는 좋은 기회였습니다.

다만 처음에 문제 해결을 어떻게 할지 굉장히 많은 고민이 있었습니다.

새로이 배열을 생성해야한다는점, StringBuilder를 이용해서 해결해보려했던점 등 고민이 많았던 문제였습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.