공부-코딩테스트/Java-코딩테스트-편의기능
배열값을 특정값으로 채우는 방법 Arrays.fill()
령과
2022. 8. 7. 22:40
자바로 static 변수를 활용해서 문제를 풀 경우 null과 ''가 output으로 봤을 때 차이가 없는 것에서 문제가 있었다.
https://www.acmicpc.net/problem/2447
2447번: 별 찍기 - 10
재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이
www.acmicpc.net
char[][] 2차원 배열로 ''을 먼저 채워야 했는데 이 과정을 빼고 문제가 생겼었다.
테스트를 할 때 '' 채우는 것을 빼도 결과는 똑같았기 때문에 원인을 알 수 없었는데 아스키코드를 찾아본 결과 다르더라...
이때 간단히 Arrays.fill(배열,'')을 사용하면 배열의 값들이 ''로 채워지게 된다.
사용 예시코드 ( ctrl + F : 적용코드 )
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
static char[][] table;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int input = Integer.parseInt(br.readLine());
table = new char[input][input];
for(int i = 0 ;i<input;i++) {
Arrays.fill(table[i], ' '); //적용코드
}
solution(input, 0, 0);
for (int i = 0; i < table.length; i++) {
for (int j = 0; j < table.length; j++) {
sb.append(table[i][j]);
}
sb.append("\n");
}
System.out.println(sb);
}
static void solution(int size, int x, int y) {
if (size == 3) {
for (int i = x; i < x + 3; i++) {
for (int j = y; j < y + 3; j++) {
table[i][j] = '*';
}
}
table[x + 1][y + 1] = ' ';
} else {
for (int i = x; i < x + size; i += (size / 3)) {
for (int j = y; j < y + size; j += (size / 3)) {
if (!((i == (x + (size / 3))) && (j == (y + (size / 3))))) {
solution(size / 3, i, j);
}
}
}
}
}
}