CodingTest

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

쩡선영 2023. 1. 10. 00:36

프로그래머스 0단계 잘러서 배열로 저장하기 입니다!

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

 

프로그래머스

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

programmers.co.kr

 

● 문제설명

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

<제안사항>

1) 1<= my_str의 길이 <=100

2) 1<= n <= my_str의 길이

3) my_str은 알파벳 소문자, 대문자, 숫자로 이루어져 있습니다.

 

● 직접 짜본 코드

class Solution {
    public String[] solution(String my_str, int n) {
        int length,cnt=0, flag=0;
        if(my_str.length()%n==0) length=my_str.length()/n;
        else length=my_str.length()/n+1;
        String answer[]= new String[length];
        
        for(int i=0; i<my_str.length(); i+=n){
            if(i+n>my_str.length()) flag=1;
            if(flag==0) answer[cnt]=my_str.substring(i,i+n);
            else answer[cnt]=my_str.substring(i,my_str.length());
            cnt++;
        }
        return answer;
    }
}

 

● 코드 해설

1) my_str.length()%n이 0으로 나누어 떨어지면 length는 그대로, 아니게 된다면 +1을 더해줬습니다

2) answer을 length만큼의 길이로 선언해준 뒤

3) 0부터 my_str.length까지 반복문을 돌려주는데

4) answer 한 칸에 들어갈 문자열의 길이가 다를 때의 경우를 생각하여 

    i+n>my_str.lengt()이면 flag를 1로 초기화 시켜줬습니다.

5) flag가 0이면 substring 메소드를 사용하여 answer[cnt]=my_str.substring(i,i+n)을 하였고

6) 아니면 answer[cnt]=my_str.substring(i,my_str.lengt()) 했습니다

 

제가 봐도 코드가 좀 복잡한 거 같네요ㅠㅠ

 

● 다른사람의 코드

import java.util.ArrayList;

class Solution {
    public ArrayList solution(String my_str, int n) {
        ArrayList<String> answer = new ArrayList<>();
        int i=0;
        while(true){
            if(i+n>=my_str.length()){
                answer.add(my_str.substring(i, my_str.length()));
                break;
            }
            answer.add(my_str.substring(i, i+n));
            i+=n;
        }
        return answer;
    }
}

저랑 결은 비슷하지만 ArrayList를 사용하여 이렇게 푸루 수도 있군요!

 

 

● 새롭게 알게된 점

이번 문제를 통해 substring이라는 메소드를 처음 알게 됐어요

간단하게 정리를 해보겠습니다!!

 

substring이란 문자열을 자르는 메소드입니다.

substring함수는 인자값이 하나 혹은 두개가 들어갈 수 있습니다.

 

인자값이 하나라면 ex) str.substring(3)

str 문자열에서 3번째 인덱스부터 자라른 것이 되고요

 

인자값이 두개라면 ex)str.substrig(2,6)

str 문자열에서 2번째부터 6번째 인덱스까지만 자르라는 뜻이 됩니다

 

여기서 한가지 주의해야될 점은

인덱스가 배열과 같이 0부터 시작된다는 점을 꼬옥 명심하셔야 합니다!!!