* 프로그래머스 > 코딩테스트 입문
* 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/120913
[문제 설명]
문자열 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"] |
[유의사항]
입출력 예 #1의 경우 "abc1Addfggg4556b"를 길이 6씩 자르면 "abc1Ad", "dfggg4" 두개와 마지막 "556b"가 남습니다. 이런 경우 남은 문자열을 그대로 배열에 저장합니다.
Solution.java
class Solution {
public String[] solution(String my_str, int n) {
//만들어질 배열의 개수 알아내기
int arrNum=my_str.length()%n == 0 ? my_str.length()/n : my_str.length()/n+1;
//얻어낸 배열의 개수로 String 배열 생성
String[] answer=new String[arrNum];
//배열의 개수만큼 반복문 돌기
for(int i=0; i<arrNum; i++){
//문자열의 개수가 n보다 크거나 같으면
if(my_str.length() >= n){
//배열에 n개씩 자른 값 저장
answer[i]=my_str.substring(0, n);
//my_str을 수정하기
my_str=my_str.substring(n, my_str.length());
//문자열의 개수가 n보다 작으면
}else{
answer[i]=my_str.substring(0, my_str.length());
}
}
return answer;
}
}
str.substring(a,b)
- 문자열 str의 a번째 인덱스에서부터 b번째 인덱스 직전까지 추출한다.
- 주어진 매개변수 my_str 을 잘라낸 이후의 문자열로 수정해주고 다시 반복문을 돌린다.
** 다른 분들의 풀이 참고!
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;
}
}
- substring() 에서 사용할 인덱스 값을 start, end 변수로 정의해서 반복문을 돌 때마다 이 값이 변경되게 해주었다.
'코딩테스트' 카테고리의 다른 글
[프로그래머스/SQL] 특정 옵션이 포함된 자동차 리스트 구하기 (0) | 2023.06.22 |
---|---|
[프로그래머스/SQL] 12세 이하인 여자 환자 목록 출력하기 (0) | 2023.06.13 |
[프로그래머스/SQL] 평균 일일 대여 요금 구하기 (0) | 2023.04.13 |
[프로그래머스/Java] 배열의 유사도 (0) | 2023.04.10 |
[프로그래머스/Java] 옹알이(1) (0) | 2023.04.06 |