문제 설명
종이를 접은 횟수 n이 매개변수로 주어질 때, 종이를 절반씩 n번 접은 후 모두 펼쳤을 때 생기는 접힌 부분의 모양을 배열에 담아 return 하도록 solution 함수를 완성해주세요.
제한사항
- 종이를 접는 횟수 n은 1 이상 20 이하의 자연수입니다.
- 종이를 접었다 편 후 생긴 굴곡이 ∨ 모양이면 0, ∧ 모양이면 1로 나타냅니다.
- 가장 왼쪽의 굴곡 모양부터 순서대로 배열에 담아 return 해주세요.
C++ 풀이
#include <string>
#include <vector>
using namespace std;
vector<int> solution(int n) {
vector<int> answer;
vector<int> t;
int temp, s;
for (int i = 1; i <= n; i++) {
t.clear();
temp = 0;
s = answer.size();
while (temp <= s) {
if (temp % 2 == 0)
t.push_back(0);
else
t.push_back(1);
if ((answer.size() > 0) && (temp < s))
t.push_back(answer[temp]);
temp++;
}
answer = t;
}
return answer;
}
접을 때, 기존 접힌 굴곡 사이사이로 굴곡∨와 ∧가 번갈아가면서 추가되는 것을 확인할 수 있다.
얘를 들어, 현재 ∨ ∨ ∧로 접혀있는 상태에서 한 번 더 접는다면
∨ ∨ ∧ ∨ ∨ ∧ ∧ 와 같이 기존 굴곡 사이사이로 굴곡 ∨와 ∧가 번갈아가며 추가된다.
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/62049
반응형
'알고리즘 · 코딩' 카테고리의 다른 글
[프로그래머스] 프린터 (0) | 2020.01.04 |
---|---|
[프로그래머스] 완주하지 못한 선수 (0) | 2019.12.27 |
[프로그래머스] 뉴스 클러스터링 (0) | 2019.12.01 |
[프로그래머스] 비밀지도 (0) | 2019.11.24 |
[프로그래머스] 다음 큰 숫자 (0) | 2019.11.23 |