티스토리 뷰
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/62049
코딩테스트 연습 - 종이접기
직사각형 종이를 n번 접으려고 합니다. 이때, 항상 오른쪽 절반을 왼쪽으로 접어 나갑니다. 다음은 n = 2인 경우의 예시입니다. 먼저 오른쪽 절반을 왼쪽으로 접습니다. 다시 오른쪽 절반을 왼쪽��
programmers.co.kr
2. 설명
규칙이
0 ->001
001 -> 0010011
0010011 -> 001001100011011
일단 무조건 홀수다.
그리고 다음으로 갈 때 0 을기준으로 숫자를 뒤집어서(?) 삽입한다.
0이면 1, 1이면 0으로
규칙찾는게 어려웠던 문제
3. 코드
import java.util.ArrayList;
class Solution {
public int[] solution(int n) {
int[] answer;
ArrayList<Integer> result = new ArrayList<>();
folding(n, 0, result);
answer = result.stream().mapToInt(Integer::intValue).toArray();
return answer;
}
private void folding(int n, int idx, ArrayList<Integer> result) {
if(idx==n) return;
result.add(0);
for(int i=result.size()-2; i>=0; i--) {
int num = result.get(i) == 1 ? 0 : 1;
result.add(num);
}
folding(n, ++idx, result);
}
}
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
프로그래머스 정수 삼각형 JAVA (0) | 2020.06.17 |
---|---|
프로그래머스 타일 장식물 JAVA (피보나치수열, DP) (0) | 2020.06.16 |
프로그래머스 [3차] 파일명 정렬 JAVA (0) | 2020.06.10 |
프로그래머스 [3차] n진수 게임 JAVA (0) | 2020.06.05 |
프로그래머스 [1차] 캐시 JAVA (0) | 2020.06.03 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday