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

c0zi·2023년 4월 12일
0

JAVA

목록 보기
3/4
post-thumbnail

프로그래머스 Lv.0

잘라서 배열로 저장하기

❓ 문제 설명 :

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

✖️ 제한 사항

  • 1 ≤ my_str의 길이 ≤ 100
  • 1 ≤ n ≤ my_str의 길이
  • my_str은 알파벳 소문자, 대문자, 숫자로 이루어져 있습니다.

📝 문제 풀이

1) 처음에는 Math함수의 ceil을 써서 my_str의 길이를 n으로 나눈 뒤 올림을 할 생각이었다.
2) 올림을 하면 my_str이 n으로 나누어 떨어지지 않아도 한번 더 실행할테니까 ?
3) 결과는 실패..

import java.lang.Math;
import java.util.ArrayList;

class Solution {
    public String[] solution(String my_str, int n) {
        
        ArrayList<String> answer = new ArrayList<>();
        
        int num = (int) Math.ceil(my_str.length()/n);
        
        for (int i = 0; i <  num; i++) {
            answer.add(my_str.substring(i*n, i*n + n));
        }
        
        return answer.toArray(new String[0]);
    }
}

// 실행한 결괏값 ["abc1Ad","dfggg4"]이 기댓값 ["abc1Ad","dfggg4","556b"]과 다릅니다.

사실 아직도 왜 틀렸는지 이해 모담 ..

그래서 찾아보니 다들 my_str이 n으로 나누어 떨어지는 경우, 안나누어 떨어지는 경우를 나눠서 풀이했더라

코드 줄여보려다가 시간 와장창 잡아먹음 ㅎㅎ

그래서 남들 하는대로 했다 결국

🖥️ ~

import java.util.ArrayList;

class Solution {
    public String[] solution(String my_str, int n) {
        
        ArrayList<String> answer = new ArrayList<>();
        
        int num = my_str.length() / n;
        
        for (int i = 0; i <  num; i++) {
            answer.add(my_str.substring(i * n, i * n + n));
        } if ((my_str.length() % n) != 0) {
            answer.add(my_str.substring
            ```
코드를 입력하세요
```((my_str.length() / n ) * n));
        }
        
        return answer.toArray(new String[0]);
    }
}

+) 다른 분들의 코드를 본 후

진짜 다들 와.. 너무 깔끔하다 싶지만

int resultCnt = (my_str.length() + n - 1) / n;

이분 천재신가 싶었다 다음에 써먹어야지 ㅎㅎ

profile
무엇이든 할 수 있는 개발 블로그

0개의 댓글