Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 468f17c

Browse files
committed
고다혜: [BOJ] 1030 프렉탈 평면_241217
1 parent 0da6e94 commit 468f17c

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

‎BOJ/1000-5000번/DH_1030.java‎

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import java.io.*;
2+
import java.util.*;
3+
4+
/*
5+
* 프렉탈 평면
6+
*/
7+
8+
public class DH_1030 {
9+
static StringBuilder sb = new StringBuilder();
10+
static int s, N, K, R1, R2, C1, C2;
11+
12+
public static void main(String[] args) throws Exception {
13+
14+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
15+
StringTokenizer st = new StringTokenizer(br.readLine());
16+
17+
s = stoi(st); N = stoi(st); K = stoi(st);
18+
R1 = stoi(st); R2 = stoi(st);
19+
C1 = stoi(st); C2 = stoi(st);
20+
21+
// 시간 s일 때, R1행 C1열부터 R2행 C2열까지의 모습을 출력
22+
if(s == 0) sb.append("0");
23+
else {
24+
for(int r = R1; r < R2 + 1; r++) {
25+
for(int c = C1; c < C2 + 1; c++) {
26+
int outer = (int) Math.pow(N, s);
27+
double percent = ((N - K) >> 1) * (1.0) / N;
28+
sb.append(getBlockStatus(r, c, s, N, K, outer, percent));
29+
}
30+
31+
sb.append("\n");
32+
}
33+
}
34+
35+
System.out.print(sb);
36+
}
37+
38+
static int getBlockStatus(int r, int c, int s, int n, int k, int outer, double percent) {
39+
40+
// 바깥 사각형과 안쪽 사각형 사이 간격 구하기
41+
int interval = (int) (outer * percent);
42+
43+
if(isInCenter(r, c, interval, outer)) return 1;
44+
if(s == 1) return 0;
45+
46+
// 그 다음 확인할 사각형 사이즈
47+
int nextRecSize = (outer / n);
48+
49+
return getBlockStatus(r % nextRecSize, c % nextRecSize, s - 1, n, k, outer / n, percent);
50+
}
51+
52+
static boolean isInCenter(int r, int c, int interval, int outer) {
53+
return r >= interval && r < (outer - interval) && c >= interval && c < (outer - interval);
54+
}
55+
56+
static int stoi(StringTokenizer st) {
57+
return Integer.parseInt(st.nextToken());
58+
}
59+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /