GaGe

[프로그래머스] Summer/Winter Coding(2019) 종이접기 - java 본문

알고리즘/[2020] 프로그래머스

[프로그래머스] Summer/Winter Coding(2019) 종이접기 - java

Sorrel 2020. 5. 26. 21:38

< 패턴 >

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;
    }
}

= 인덱스 오류

Comments