안녕하세요. BlockDMask 입니다.
별찍기 시리즈의 열번째 입니다.
0. 제목
백준 2447 별찍기10
BOJ 2447 별찍기10
C++ 별찍기 반복문
1. 문제 설명
아래 사진을 보고 별찍는 규칙을 유추한 뒤에 별을 찍어 보시오.
첫째 줄에 N이 주어진다.
N은 항상 3의 제곱꼴인 수이다.
(1, 3, 9, 27, ...)
(N=3^k, 0<=k<8)
2. 풀이 과정
분할정복(divided and conquer) 방식으로 풀었습니다.
사실 작은 범위 1일때
3일때
9일때의 규칙을 찾아서
그 규칙에 맞게 코드를 짰습니다.
이런식으로 해서 규칙을 찾아서 작성했습니다.
반복문을 이용했습니다.
3. 소스 코드
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 43 | //https://www.acmicpc.net/problem/2447 //BOJ_2447_star10 #include<iostream> #include<cstdio> using namespace std; class star{ private: int n; public: star(int n): n(n){} void callDraw() { for(int y=0; y<n; y++){ for(int x=0; x<n; x++){ draw(y,x); } printf("\n"); } } void draw(int dy, int dx){ while(dy!=0){ if(dy%3==1 && dx%3==1){ //몫을 3으로 나누었을때 나머지가 둘다 나머지 1일때 printf(" "); return; } dy/=3; //3으로 나누어 몫을 만든다. dx/=3; } printf("*"); } }; int main(void){ int n; scanf("%d", &n); star *s = new star(n); s->callDraw(); delete s; return 0; } | cs |
4. 인증
문제출처 - https://www.acmicpc.net/problem/2447
감사합니다.
'<알고리즘 문제풀이&연습> > [C++] 백준, 프로그래머스 등등' 카테고리의 다른 글
[백준 2748] 피보나치 수2 (0) | 2017.12.05 |
---|---|
[백준 1924] 2007년 (0) | 2017.12.04 |
[백준 5648] 역원소 정렬 (0) | 2017.11.29 |
[백준 1212] 8진수 2진수 (1) | 2017.11.28 |
[백준 2446] 별찍기9 (0) | 2017.11.21 |
[백준 10820] 문자열 분석 (0) | 2017.11.21 |
[백준 2445] 별찍기8 (0) | 2017.11.20 |
[백준 10971] 외판원 순회 2 (DFS) (2) | 2017.11.20 |