-
[Programmers] 종이접기Algorithm/Programmers 2020. 4. 23. 17:51
[Level 3] 종이접기
https://programmers.co.kr/learn/courses/30/lessons/62049
- 종이를 n번 접은 후 모두 펼쳤을 때 생기는 접힌 부분의 모양을 배열에 담아 return 하도록 solution 함수를 완성하시오
Solution
- 첫번째 생각했던 방법은 리스트 중간 중간 값을 추가하는 방법 = 시간초과
- 가운데 접힌 모양을 기준으로 대칭인 점을 고려하여 풀었다.
- 푸는데 시간이 너무 오래 걸림 .. ㅠ ㅠ
소스코드
123456789101112131415161718192021222324252627282930313233343536import java.io.IOException;import java.util.LinkedList;public class Solution {static int[] answer;static int[] solution(int n) {if(n == 1) return 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