신규 블로그를 만들었습니다!
※ 문제 풀이 코드는 맨 아래에 있습니다.
문제
예제를 보고 별찍는 규칙을 유추한 뒤에 별을 찍어 보세요.
입력
첫째 줄에 N이 주어진다. N은 항상 3*2^k 수이다. (3, 6, 12, 24, 48, ...) (k<=10)
출력
첫째 줄부터 N번째 줄까지 별을 출력한다.
예제입력
24
예제출력
*
* *
*****
* *
* * * *
***** *****
* *
* * * *
***** *****
* * * *
* * * * * * * *
***** ***** ***** *****
* *
* * * *
***** *****
* * * *
* * * * * * * *
***** ***** ***** *****
* * * *
* * * * * * * *
***** ***** ***** *****
* * * * * * * *
* * * * * * * * * * * * * * * *
***** ***** ***** ***** ***** ***** ***** *****
코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Ex2448 {
private static char[][] map;
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
try {
int n = Integer.parseInt(br.readLine());
map= new char[n][2*n-1];
initMap(n);
drawStar(0, n-1, n);
int i;
for(i=0; i<n; i++) {
bw.write(map[i]);
bw.write('\n');
}
bw.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
// 별 그리기
private static void drawStar(int x, int y, int n) {
if(n == 3) {
map[x][y] = '*';
map[x+1][y-1] = map[x+1][y+1] = '*';
map[x+2][y-2] = map[x+2][y-1] = map[x+2][y] = map[x+2][y+1] = map[x+2][y+2] = '*';
return;
}
// 윗 삼각형
drawStar(x, y, n/2);
// 아래 왼쪽 삼각형
drawStar(x + n/2, y - n/2, n/2);
// 아래 오른쪽 삼각형
drawStar(x + n/2, y + n/2, n/2);
}
// 초기화
private static void initMap(int n) {
int i,j;
for(i=0; i<n; i++) {
for(j=0; j<2*n-1; j++) {
map[i][j] = ' ';
}
}
}
}
결과
※ 직접 문제 풀고 돌려본 뒤, 채점까지 마친 후에 작성한 글입니다.
더 좋은 방법이 있다면, 댓글로 알려주시면 감사하겠습니다 :)
'Algorithm > 백준 온라인 저지' 카테고리의 다른 글
백준/8958번 :: OX 퀴즈 (Java 구현) 알고리즘 (4) | 2018.07.01 |
---|---|
백준/2577번 :: 숫자의 개수 (Java 구현) 알고리즘 (4) | 2018.07.01 |
백준/4673번 :: 셀프 넘버 (Java 구현) (6) | 2018.06.28 |
백준/1065번 :: 한수(Java 구현) (4) | 2018.06.28 |
백준/1110번 :: 더하기 사이클(Java 구현) (4) | 2018.06.28 |
최근댓글