Skip to content

Commit 3ef2f79

Browse files
authored
[20250308] BOJ / G3 / 인지융~ / 권혁준
1 parent 7df3cba commit 3ef2f79

File tree

1 file changed

+115
-0
lines changed

1 file changed

+115
-0
lines changed
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
```java
2+
3+
import java.util.*;
4+
import java.io.*;
5+
6+
7+
class Main {
8+
9+
// IO field
10+
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
11+
static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
12+
static StringTokenizer st;
13+
14+
static void nextLine() throws Exception {st = new StringTokenizer(br.readLine());}
15+
static int nextInt() {return Integer.parseInt(st.nextToken());}
16+
static long nextLong() {return Long.parseLong(st.nextToken());}
17+
static void bwEnd() throws Exception {bw.flush();bw.close();}
18+
19+
// Additional field
20+
21+
static int N, C, E;
22+
static char[][] A;
23+
static int[] dx = {1,0,-1,0};
24+
static int[] dy = {0,1,0,-1};
25+
26+
public static void main(String[] args) throws Exception {
27+
28+
ready();
29+
solve();
30+
31+
bwEnd();
32+
33+
}
34+
35+
static void ready() throws Exception{
36+
37+
N = Integer.parseInt(br.readLine());
38+
nextLine();
39+
C = nextInt();
40+
E = nextInt();
41+
A = new char[N][N];
42+
43+
}
44+
45+
static void solve() throws Exception{
46+
47+
int G = 1;
48+
for(int g=0;g<N;g++){
49+
if(C == 0) break;
50+
int x=0, y=g;
51+
for(int k=0;k<=g;k++){
52+
if(C == 0) break;
53+
A[x++][y--] = '1';
54+
C--;
55+
}
56+
}
57+
for(int g=1;g<N;g++){
58+
if(C == 0) break;
59+
int x=g, y=N-1;
60+
for(int k=0;k<=N-1-g;k++){
61+
if(C == 0) break;
62+
A[x++][y--] = '1';
63+
C--;
64+
}
65+
}
66+
67+
68+
69+
for(int g=N-1;g>=0;g--){
70+
if(E == 0) break;
71+
int x=N-1, y=g;
72+
for(int k=0;k<=N-1-g;k++){
73+
if(E == 0) break;
74+
if(!safe(x,y)) {
75+
bw.write("-1");
76+
return;
77+
}
78+
A[x--][y++] = '2';
79+
E--;
80+
}
81+
}
82+
for(int g=N-2;g>=0;g--){
83+
if(E == 0) break;
84+
int x=g, y=0;
85+
for(int k=0;k<=g;k++){
86+
if(E == 0) break;
87+
if(!safe(x,y)){
88+
bw.write("-1");
89+
return;
90+
}
91+
A[x--][y++] = '2';
92+
E--;
93+
}
94+
}
95+
96+
bw.write("1\n");
97+
for(int i=0;i<N;i++){
98+
for(int j=0;j<N;j++) bw.write((A[i][j] >= '1' ? A[i][j] : '0'));
99+
bw.write("\n");
100+
}
101+
102+
}
103+
104+
static boolean safe(int x, int y){
105+
for(int i=0;i<4;i++){
106+
int xx = x+dx[i], yy = y+dy[i];
107+
if(xx<0 || xx>=N || yy<0 || yy>=N) continue;
108+
if(A[xx][yy] == '1') return false;
109+
}
110+
return true;
111+
}
112+
113+
}
114+
115+
```

0 commit comments

Comments
 (0)