Jam's story
[프로그래머스] 잘라서 배열로 저장하기 java 본문
package lv0;
public class 잘라서배열로저장하기 {
public static String[] solution(String my_str, int n) {
int len=(int) Math.ceil((double)my_str.length()/n);
int strlen=my_str.length();
System.out.println("len: "+len);
System.out.println("my_str: "+strlen);
String[] answer = new String[len];
for (int i = 0, j=0; j<len; i+=n, j++, n+=n) {
System.out.println("i: "+i+", n: "+n+", j: "+j);
if(n>my_str.length()) {
System.out.println(i);
i-=n;
System.out.println(i+", "+strlen);
answer[j]=my_str.substring(i,strlen);
}
else {answer[j]=my_str.substring(i,n);
System.out.println(answer[j]);
}
}
return answer;
}
public static void main(String[] args) {
String my_str="abc1Addfggg4556b";
int n=6;
solution(my_str, n);
}
}
내가 틀렸던 이유를 알게됨
Math.ceil은 올림하는 함수이며 소숫점이 있어야 올림을 할 수 있는데
System.out.println((double)my_str.length()/n);
System.out.println(my_str.length()/n);
밑에는 정수형으로 결과값이 나오니 올릴게 없는 것이다.
다시풀기(정답)
substring 해줄 start값과 end값을 변수로 선언한다.
start+n = end 값이 길이 끝값을 넘어가면 end는 my_str.length()
넘어가지 않는다면 end는 start+n
package lv0;
import java.util.Iterator;
public class Main{
public static String[] solution(String my_str, int n) {
//리턴할 배열의 크기를 정하기 위해 길이 변수 구하기
//my_str.length()/n은 int형이어서 소수점이 안나오기에 올림을 할 수 없다.
//그래서 double 형으로 바꾼후에 int 형으로 다시 바꿔준다.
int len =(int) Math.ceil((double)my_str.length()/n);
//답을 반환해줄 String 배열 선언
System.out.println(len);
String[] answer=new String[len];
for (int i = 0; i < answer.length; i++) {
//substring 을 해줄 start와 end 변수 선언
//start에서 +가 아닌 *를 해주는 이유
//만일 + 라면, i=0, start=6 / i=1, start=7
//*로 해야 i=0, start=0 / i=1, start=6
int start= i*n;
int end=start+n;
//end 값을 조건에 따라 지정해주자
//끝값이 my_str과 같거나 넘어간다면 end를 my_str.length()로
if(start+n>=my_str.length()) {
end=my_str.length();
}else {
end=start+n;
}
answer[i]=my_str.substring(start,end);
}
return answer;
}
public static void main(String[] args) {
String my_str="abc1Addfggg4556b";
int n=6;
solution(my_str, n);
}
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 세균증식 JAVA (0) | 2022.12.21 |
---|---|
[프로그래머스] 문자열 정렬하기(2) JAVA (0) | 2022.12.21 |
[프로그래머스]문자열 밀기 java (0) | 2022.12.12 |
[프로그래머스] 종이자르기 java (0) | 2022.12.12 |
[프로그래머스] 다음에 올 숫자 - java (0) | 2022.12.09 |
Comments