ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Programmers] 종이접기
    Algorithm/Programmers 2020. 4. 23. 17:51

    [Level 3] 종이접기

    https://programmers.co.kr/learn/courses/30/lessons/62049

    • 종이를 n번 접은 후 모두 펼쳤을 때 생기는 접힌 부분의 모양을 배열에 담아 return 하도록 solution 함수를 완성하시오

     

    Solution

    • 첫번째 생각했던 방법은 리스트 중간 중간 값을 추가하는 방법 = 시간초과
    • 가운데 접힌 모양을 기준으로 대칭인 점을 고려하여 풀었다.
    • 푸는데 시간이 너무 오래 걸림 .. ㅠ ㅠ

     

     

    소스코드

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    import java.io.IOException;
    import java.util.LinkedList;
     
    public class Solution {
        static int[] answer;
        
        static int[] solution(int n) {
            if(n == 1return answer = new int[] {0};
            String result = "";
            for(int i = 1; i<=n;i++) {
                result = fold(i,result);
            }
            answer = new int[result.length()];
            
            for(int i = 0; i<result.length(); i++) {
                answer[i] = result.charAt(i)-'0';
            }
            
            return answer;
        }
        
        static String fold(int cnt, String s) {
            StringBuilder sb = new StringBuilder(s);
            if(cnt == 1) {
                sb.append("0");
            }else{
                sb.append("0");
                String[] temp = s.split("");
                for(int i = temp.length-1; i>= 0; i--) {
                    if(temp[i].equals("0")) sb.append("1");
                    else sb.append("0");
                }
            }
            return sb.toString();
        }
    }
    cs

    'Algorithm > Programmers' 카테고리의 다른 글

    [Programmers] 다리를 건너는 트럭  (0) 2020.05.30
    [Programmers] 스킬트리  (0) 2020.05.30
    [Programmers] 프린터  (0) 2020.05.29
    [Programmers] 주식가격  (0) 2020.05.29
    [Programmers] 베스트앨범  (0) 2020.04.24

    댓글

Designed by Tistory.