주니어 기초 코딩공부/JAVA_programmers_코딩테스트
잘라서 배열로 저장하기_programmers_lev00
jju_developer
2022. 12. 17. 19:48
728x90
<코딩 테스트>
문자열 my_str과 n이 매개변수로 주어질 때,
my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.
<나의 풀이 과정>
처음에 오류난 코드 중, 길이 설정을 String[] answer = new String[my_str.length()%n]; 이렇게 하고
substring을 이용할때에도 answer[i] = my_str.substring(i, n);
으로 설정했었습니다.
이렇게 설정을 하니, 출력 될때 자꾸만 잘리는것이 ["abc1Ad", "bc1Ad", "c1Ad"]
이렇게 나왔었습니다.
이를 해결하기 위해서 startIndex 와 endIndex를 지정해주었습니다.
startIndex += n; 인덱스를 자를 시점은 내가 원하는 길이인 n개만큼 더한 수를 자르도록 지정했으며,
어디까지 문자열을 자를것인지에 대한 해답은
만약 자르는것이 6으로 시작했을때 0~6, 7~12 이렇게 endIndex에 + n 을 더한 값으로 출력하고
그 마지막 인덱스가 문자열의 길이를 초과하지 않도록 설정하였습니다.
<나의 풀이 코드>
class Solution {
public String[] solution(String my_str, int n) {
int length = my_str.length() % n == 0 ? my_str.length() / n : my_str.length() / n + 1;
int startIndex = 0;
int endIndex = n;
String[] answer = new String[length];
for (int i = 0; i < answer.length; i++) {
answer[i] = my_str.substring(startIndex, endIndex);
startIndex += n;
endIndex = (endIndex + n) > my_str.length() ? my_str.length() : endIndex + n;
}
for (String string : answer) {
System.out.print(string + ",");
}
return answer;
}
}
<다른 사람 풀이>
import java.util.*;
class Solution {
public String[] solution(String my_str, int n) {
List<String> list = new ArrayList<>();
String cut = "";
for(int i =0; i<my_str.length(); i++){
cut += my_str.charAt(i);
if(cut.length() == n || i+1 == my_str.length()){
list.add(cut);
cut = "";
}
}
String[] answer = new String[list.size()];
for(int i=0; i<list.size(); i++){
answer[i] = list.get(i);
}
return answer;
}
}
<다른 사람 풀이>
import java.util.List;
import java.util.ArrayList;
class Solution {
public String[] solution(String my_str, int n) {
List<String> answer = new ArrayList<>();
String str = "";
for(int i=0; i<my_str.length(); i++){
str += my_str.charAt(i);
if(str.length() == n || i == my_str.length()-1){
answer.add(str);
str = "";
}
}
return answer.stream().map(s -> s).toArray(String[]::new);
}
}
https://school.programmers.co.kr/learn/courses/30/lessons/120913
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
728x90