- 입출력 예
my_str | n | result |
"abc1Addfggg4556b" | 6 | ["abc1Ad", "dfggg4", "556b"] |
"abcdef123" | 3 | ["abc", "def", "123"] |
- 입출력 예 설명
입출력 예 #1
"abc1Addfggg4556b" 를 길이 6씩 잘라 배열에 저장한 ["abc1Ad", "dfggg4", "556b"]를 return해야 합니다.
입출력 예 #2
"abcdef123" 를 길이 3씩 잘라 배열에 저장한 ["abc", "def", "123"]를 return해야 합니다.
- 유의사항
입출력 예 #1의 경우 "abc1Addfggg4556b"를 길이 6씩 자르면 "abc1Ad", "dfggg4" 두개와 마지막 "556b"가 남습니다. 이런 경우 남은 문자열을 그대로 배열에 저장합니다.
- 내 풀이
class Solution {
public String[] solution(String my_str, int n) {
String[] answer = {};
// 자른 배열의 개수를 구하기 위해 삼항연산자 사용
answer = new String[my_str.length() % n != 0 ? my_str.length() / n +1 : my_str.length() / n];
// 문자열이 딱 n개 만큼 떨어지지 않을 수 있음
// 떨어지는 만큼만 배열에 담는다
for (int i = 0; i < my_str.length() / n; i++) {
answer[i] = my_str.substring(n * i , n + (n * i));
}
// n개 만큼 문자열을 잘랐을때 딱 나누어 지지 않는다면 문자열 뒷부분만 추출해준다.
if(my_str.length() % n != 0){
answer[answer.length-1] = my_str.substring(my_str.length() - (my_str.length() % n), my_str.length());
}
return answer;
}
}
문제를 처음보자마자 이건 쉽게 끝나겠네 했다가 큰 코 다쳤다...
단순하게 substring만 쓰면 되겠네 했다가
매개변수 문자를 자르고 나머지 문자를 다시 담아서 나머지 문자에서 반복할 것이냐 , 매개변수 내에서 위치만 바꿀 것인가로 시간이 많이 걸렸다
문제를 풀면 풀수록 머리가 안돌아가는 기분인데...?
- 다른 사람 풀이
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;
}
}
'프로그래머스 > [프로그래머스 - JAVA] Lv.0' 카테고리의 다른 글
[프로그래머스 - JAVA] 구술을 나누는 경우의 수 (0) | 2023.03.14 |
---|---|
[프로그래머스 - JAVA] 문자열 계산하기 (0) | 2023.03.14 |
[프로그래머스 - JAVA] 영어가 싫어요 (0) | 2023.03.13 |
[프로그래머스 - JAVA] 컨트롤 제트 (0) | 2023.03.13 |
[프로그래머스 - JAVA] 7의 개수 (0) | 2023.03.13 |
댓글