꽤 오랜시간 동안, 해맨 문제.
출처 : https://www.acmicpc.net/problem/2448
문제
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
입력
첫째 줄에 N이 주어진다. N은 항상 3×2k 수이다. (3, 6, 12, 24, 48, ...) (k ≤ 10)
출력
첫째 줄부터 N번째 줄까지 별을 출력한다.
예제 입력 1
24
예제 출력 1
* * * ***** * * * * * * ***** ***** * * * * * * ***** ***** * * * * * * * * * * * * ***** ***** ***** ***** * * * * * * ***** ***** * * * * * * * * * * * * ***** ***** ***** ***** * * * * * * * * * * * * ***** ***** ***** ***** * * * * * * * * * * * * * * * * * * * * * * * * ***** ***** ***** ***** ***** ***** ***** *****
소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | #include<iostream> using namespace std; char star[3072][6144]; void draw(int x, int y, int size){ if(size != 3){ draw(x, y, size/2); // 현재 위치 별 그림 draw(x-size/2, y+size/2, size/2); // 왼쪽 아래 별 그림 draw(x-size/2+size, y+size/2,size/2); // 오른쪽 아래 별 그림 } else { star[y][x] = '*'; star[y+1][x-1] = '*'; star[y+1][x] = ' '; star[y+1][x+1] = '*'; star[y+2][x-2] = '*'; star[y+2][x-1] = '*'; star[y+2][x] = '*'; star[y+2][x+1] = '*'; star[y+2][x+2] = '*'; } return; } int main(){ int n; cin >> n; for(int i = 0; i < n; i++){ for(int j = 0; j < 2*n-1; j++){ star[i][j] = ' '; // 공백 초기화 } } draw(n-1,0,n); for(int i = 0; i < n; i++){ for(int j = 0; j < 2*n-1; j++){ cout << star[i][j]; } cout << '\n'; } return 0; } | cs |
※ 본 글은 개인 포트폴리오 혹은 공부용으로 사용하기 때문에, 무단 복사 유포는 금지하지만, 개인 공부 용도로는 얼마든지 사용하셔도 좋습니다.
'알고리즘 > 백준' 카테고리의 다른 글
[백준 1517] 버블 소트 (0) | 2019.03.21 |
---|---|
[백준 1074] Z (0) | 2019.03.21 |
[백준 2447] 별 찍기 - 10 (0) | 2019.03.20 |
[백준 1992] 쿼드트리 (0) | 2019.03.20 |
댓글