문제 풀이

[프로그래머스] 종이접기

컴영 2020. 5. 26. 00:37

풀이)

규칙이 존재하는 문제다.

중간값은 항상 0이고, i번째 접는 횟수라면 ( i - 1 접는 상태 값 + 중간 0 + i -1 접는 상태 대칭되는 값)이다.


아래 예시를 보면 더 이해가 쉬울 것이다. 중간값 0을 빨간색으로 뒀을때

1번 접으면 : 0

2번 접으면 : 0 0 1

3번 접으면 : 0 0 1 0 0 1 1

4번 접으면 : 0 0 1 0 0 1 1 0 0 0 1 1 0 1 1


-> 2번째 값이 0 0 1일때

    3번째 값은 0 0 1 + 0 + 0 1 1 



코드)

#include <string> #include <vector> using namespace std; vector<int> solution(int n) { vector<int> answer; for(int i = 0 ; i < n ; i++) { answer.push_back(0); // 이전값에 중간값 0 더하기 for(int j = answer.size()-2 ; j >= 0 ; j--) { //이전값과 대칭되는 값 answer.push_back(1-answer[j]); } } return answer; }