문제 설명
문자열 my_str과 n이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ my_str의 길이 ≤ 100
- 1 ≤ n ≤ my_str의 길이
- my_str은 알파벳 소문자, 대문자, 숫자로 이루어져 있습니다.
풀이
class Solution {
public String[] solution(String my_str, int n) {
int leng = my_str.length();
String[] answer = new String[(int)Math.ceil((double) leng / n)]; // 1
int j = 0;
for (int i=0; i < leng; i += n) {
answer[j++] = my_str.substring(i, Math.min(i+n, leng)); // 2
}
return answer;
}
}
substring()과 반복문을 사용하여 풀이
- 올림 연산을 통해 나머지가 존재하더라도 적절한 배열 크기 확보 (나머지가 있는 경우 올림하여 배열 크기 확보)
- 기존 코드 String[] answer = new String[(leng%n == 0) ? leng/n : leng/n+1];
- 간결성, 유연성 향상, Math.ceil을 사용하여 더 정확한 나눗셈 결과를 얻음
- i부터 n인덱스까지 잘라서 저장
- 반복문을 통해 문자열을 n씩 자르되, Math.min(i+n, leng)을 통해 마지막에 문자열의 길이를 초과하지 않도록 함
- 예를 들어 "abcdef12345"라는 문자열이 있을 때, 3씩 잘라서 "abc", "def", "123", "45"와 같은 부분 문자열을 생성하고 저장. 즉, 자르고 남은 문자열을 저장하기 위해 최소값 비교
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'알고리즘 & 코딩 테스트 > [Java]프로그래머스' 카테고리의 다른 글
| [프로그래머스_Java] Lv.0 공 던지기 (0) | 2024.01.19 |
|---|---|
| [프로그래머스_Java] Lv.0 문자 개수 세기 (0) | 2024.01.18 |
| [프로그래머스_Java] Lv.0 조건에 맞게 수열 변환하기 2 (0) | 2024.01.09 |
| [프로그래머스_Java] PCCE 모의고사 (0) | 2024.01.09 |
| [프로그래머스_Java] Lv.0 qr code (1) | 2024.01.08 |