본문 바로가기
프로그래머스/[프로그래머스 - JAVA] Lv.0

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

by 코딩하는 흰둥이 2023. 3. 14.
반응형

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

 


  • 내 풀이
class Solution {
    public String[] solution(String my_str, int n) {
        String[] answer = {};
        
        // 자른 배열의 개수를 구하기 위해 삼항연산자 사용
        answer = new String[my_str.length() % n != 0 ? my_str.length() / n +1 : my_str.length() / n];

        // 문자열이 딱 n개 만큼 떨어지지 않을 수 있음
        // 떨어지는 만큼만 배열에 담는다
        for (int i = 0; i < my_str.length() / n; i++) {
            answer[i] = my_str.substring(n * i , n + (n * i));
        }
        // n개 만큼 문자열을 잘랐을때 딱 나누어 지지 않는다면 문자열 뒷부분만 추출해준다.
        if(my_str.length() % n != 0){
            answer[answer.length-1] = my_str.substring(my_str.length() - (my_str.length() % n), my_str.length());
        }
        
        return answer;
    }
}

문제를 처음보자마자 이건 쉽게 끝나겠네 했다가 큰 코 다쳤다...

단순하게 substring만 쓰면 되겠네 했다가

매개변수 문자를 자르고 나머지 문자를 다시 담아서 나머지 문자에서 반복할 것이냐 , 매개변수 내에서 위치만 바꿀 것인가로 시간이 많이 걸렸다

문제를 풀면 풀수록 머리가 안돌아가는 기분인데...?

 

 

 

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

댓글