문제 풀이
[프로그래머스] 종이접기
컴영
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; }