알맹이방
[프로그래머스] Summer/Winter Coding(2019) 종이접기 - java 본문
< 패턴 >
n = 1 0
n = 2 0 0 1
n = 2 0 0 1
n = 3 0 0 1 0 0 1 1
n = 3 0 0 1 0 0 1 1
n = 4 0 0 1 0 0 1 1 0 0 0 1 1 0 1 1
n = 4 0 0 1 0 0 1 1 0 0 0 1 1 0 1 1
n = 5 0 0 1 0 0 1 1 0 0 0 1 1 0 1 1 0 0 0 1 0 0 1 1 1 0 0 1 1 0 1 1
전 이런 식으로 패턴을 찾았는데 더 이해하기 쉬운 다른 패턴 찾으신 분은 공유 부탁드려요.
이해가 안 되시는 분은 댓글 남겨주세요.
패턴만 이해하시면 아마 코딩은 쉬울 거예요.
< 정답 >
import java.util.ArrayList;
import java.util.Arrays;
class Solution {
public int[] solution(int n) {
if(n ==1){ //한번 접으면 무조건 0이 나오게 초기 값을 정해줌
int []answer={0};
return answer;
}
else{ //두번 째부터 패턴 시작
String result = "";
for(int i = 0 ; i < n ; i++){
StringBuilder sb = new StringBuilder(result); //result에서 first end 따오는 용도
StringBuilder sbb = new StringBuilder(""); //정답 정리하는 용도
String first="";
String end="";
if(i == 0){
sbb.append("0");
}
else{
first=sb.substring(0,(sb.length()/2));
end=sb.substring((sb.length()/2)+1,sb.length());
sbb.append(first);
sbb.append("0");
sbb.append(end);
sbb.append("0");
sbb.append(first);
sbb.append("1");
sbb.append(end);
}
result=sbb.toString();
}
//아래 과정은 그냥 String을 int 배열로 하나씩 넣는 과정
int[] answer = new int[result.length()];
String[] array_result;
array_result = result.split("");
for(int a = 0; a<array_result.length; a++ ){
answer[a]=Integer.parseInt(array_result[a]);
}
return answer;
}
}
}
<디버깅용 (System.out.println) 많은 것 >
import java.util.ArrayList;
import java.util.Arrays;
class Solution {
public int[] solution(int n) {
if(n ==1){
int []answer={0};
return answer;
}
else{
String result = "";
for(int i = 0 ; i < n ; i++){
StringBuilder sb = new StringBuilder(result); //result에서 first end 따오는 용도
StringBuilder sbb = new StringBuilder(""); //정답 정리하는 용도
System.out.println("sb : "+sb);
String first="";
String end="";
System.out.println("i : "+i);
if(i == 0){
sbb.append("0");
System.out.println(sbb);
System.out.println("----------------");
}
else{
System.out.println(sb.length());
first=sb.substring(0,(sb.length()/2));
end=sb.substring((sb.length()/2)+1,sb.length());
System.out.println(first);
System.out.println(end);
sbb.append(first);
sbb.append("0");
sbb.append(end);
sbb.append("0");
sbb.append(first);
sbb.append("1");
sbb.append(end);
System.out.println("sbb : "+sbb);
System.out.println("------------------------");
}
result=sbb.toString();
}
int[] answer = new int[result.length()];
String[] array_result;
array_result = result.split("");
for(int a = 0; a<array_result.length; a++ ){
answer[a]=Integer.parseInt(array_result[a]);
}
return answer;
}
}
}
< 사고 과정 >
import java.util.ArrayList;
import java.util.Arrays;
class Solution {
public int[] solution(int n) {
if(n ==1){
int []answer={0};
return answer;
}
else{
int []answer={0};
String result = "";
for(int i = 0 ; i < n ; i++){
StringBuilder sb = new StringBuilder(result);
System.out.println("sb : "+sb);
String first="";
String end="";
System.out.println("result : "+result);
System.out.println("n : "+n);
if(i == 0){
sb.append("0");
}
else{
// first=result.substring(0,(result.length()/2)-1);
// end=result.substring((result.length()/2)+1,result.length()-1);
System.out.println((result.length()/2)-1);
System.out.println((result.length()/2)+1);
System.out.println(result.length()-1);
}
}
return answer;
}
}
}
import java.util.ArrayList;
class Solution {
public int[] solution(int n) {
int[] answer = {};
int[] front = {};
int[] back = {};
int[] ex = {0,0,1,0,0,1,1};
int[] ex2 = {};
for(int i = 0; i<ex.length; i++){
ex2[i]=ex[ex.length-i-1];
}
System.out.println(ex2);
return answer;
}
}
= 인덱스 오류
'알고리즘 > [2020] 프로그래머스' 카테고리의 다른 글
[프로그래머스] 2 x n 타일링 - java (0) | 2020.06.06 |
---|---|
[프로그래머스] 네트워크 - java (0) | 2020.06.02 |
[프로그래머스] H-Index - java (문제 해설 포함) (0) | 2020.05.19 |
[프로그래머스] 2020 KAKAO BLIND RECRUITMENT 문자열압축 - java (0) | 2020.05.16 |
[프로그래머스] 큰 수 만들기 - java (0) | 2020.05.10 |
Comments