Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Tags more
Archives
Today
Total
관리 메뉴

탄탄대로

[Level 0] 잘라서 배열로 저장하기 본문

코딩테스트

[Level 0] 잘라서 배열로 저장하기

nvvs 2022. 10. 31. 14:34

- 좀 더 공식을 만드는 방향으로 방법을 생각했으면 좋겠다...! ㅠㅠ

 

 

문제 설명

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

 

풀이

class Solution {
    public String[] solution(String my_str, int n) {
        int len = my_str.length();
        int q = len / n;
        int r = len % n;

        //나머지가 있으면 배열을 하나 더 생성하기 위해 q에 1을 더함
        if(r > 0){
            q += 1;
        }
        
        //배열 생성
        String[] answer = new String[q];

        //반복문으로 문자열을 자른 후 배열에 넣기
        for(int i = 0; i < q; i++){
            //맨 마지막 순서인데 나머지가 있을 경우 자를 갯수 변경
            if(i == q-1 && r > 0){
                n = r;
            }
            //문자열 자르기
            answer[i] = my_str.substring(0, n);
            //자른 문자열을 기존 문자열에서 삭제
            my_str = my_str.replaceFirst(answer[i], "");
        }

        return answer;
    }
}

 

나는 주어진 문자열을 자르고, 자른 만큼 문자열에서 지워 substring()의 시작 값을 계속 0으로 둘 수 있게 짰다.

좀 어린애 같은 코드다...ㅠㅠ

좀 더 수학 공식같은 코드를 짤 수 있을 것 같은데..! 그 코드가 아래 코드다.

 

다른 풀이

class Solution {
    public String[] solution(String my_str, int n) {
        //나눠서 나머지가 있으면 몫에 1을 더해 배열 크기 및 반복 될 수를 구함
        int cnt = my_str.length() % n > 0 ? my_str.length() / n + 1 : my_str.length() / n;
        //배열 생성
        String[] answer = new String[cnt];
        
        //문자열을 잘라 배열에 넣기
        for(int i = 0; i < cnt; 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;
    }
}

 

좀 더 공식을 만든다는 생각으로 코드를 써보자!!

 

 

 

 

 

문제 출처

- 프로그래머스

'코딩테스트' 카테고리의 다른 글

[Level 1] 햄버거 만들기  (0) 2022.11.04
[Level 0] 다음에 올 숫자  (0) 2022.10.24
[Level 0] 연속된 수의 합  (0) 2022.10.24
[Level 0] 옹알이  (0) 2022.10.12
[Level 1] 정수 내림차순으로 배치하기  (0) 2022.08.01