[白俊2447]星図-10(正解率52%)
2264 ワード
質問する
再帰的なパターンで星を撮りましょう.Nは3の累加二乗(3,9,27.)である.表示、大きさNのパターンはN×n正方形形状.
大きさ3のパターンは真ん中にスペースがあり、真ん中のすべての格子を除いて星のパターンがあります.
nが3より大きい場合、nサイズのパターンはスペースで塗りつぶされます(N/3).×(N/3)N/3の大きさのパターンで囲まれた正方形.例えば、サイズ27のパターンは、サンプル出力1と同じである.
入力
1行目はNです.Nは3の三次方です.すなわち、ある整数kに対して、N=3 kであり、このとき1≦k<8である.
しゅつりょく
1行目からN行目まで星を出力します.
入力例
27
サンプル出力1
解答方法
上記のように分割し、星を適用するためにコードを再帰的に記述する
各インスタンスに3 x 3サイズで別々に適用し、すべての再帰が完了したら、String Builderを使用して文字列出力にマージします.
各行は、インデックスi,jをチェックし、行ごとに出力する方法である.
時間的複雑さを著しく低減する利点がある.
再帰的なパターンで星を撮りましょう.Nは3の累加二乗(3,9,27.)である.表示、大きさNのパターンはN×n正方形形状.
大きさ3のパターンは真ん中にスペースがあり、真ん中のすべての格子を除いて星のパターンがあります.
nが3より大きい場合、nサイズのパターンはスペースで塗りつぶされます(N/3).×(N/3)N/3の大きさのパターンで囲まれた正方形.例えば、サイズ27のパターンは、サンプル出力1と同じである.
入力
1行目はNです.Nは3の三次方です.すなわち、ある整数kに対して、N=3 kであり、このとき1≦k<8である.
しゅつりょく
1行目からN行目まで星を出力します.
入力例
27
サンプル出力1
解答方法
上記のように分割し、星を適用するためにコードを再帰的に記述する
各インスタンスに3 x 3サイズで別々に適用し、すべての再帰が完了したら、String Builderを使用して文字列出力にマージします.
public static void main(String[] args) throws IOException {
int N;
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(bf.readLine());
arr = new char[N][N];
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
arr[i][j]=' ';
}
}
DNC(0, 0, N);
for (int i = 0; i < N; i++) {
StringBuilder sb = new StringBuilder();
for (int j = 0; j < N; j++) {
sb.append(arr[i][j]);
}
System.out.println(sb.toString());
}
}
static void DNC(int x, int y, int n) {
int div = n / 3;
if (n == 3) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (i == 1 && j == 1) {
arr[x + i][y + j] = ' ';
continue;
}
arr[x + i][y + j] = '*';
}
}
return;
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (i == 1 && j == 1) {
continue;
}
DNC(x + i * div, y + j * div, div);
}
}
}
他人の答え各行は、インデックスi,jをチェックし、行ごとに出力する方法である.
時間的複雑さを著しく低減する利点がある.
Reference
この問題について([白俊2447]星図-10(正解率52%)), 我々は、より多くの情報をここで見つけました https://velog.io/@kw78999/백준2447-별찍기-10-정답률-52テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol