📝자바 배열
배열은 같은 자료형의 데이터가 연속적으로 구성되어있는 자료구조이다.
인덱스와 대응되며 인덱스는 0부터 시작한다.
선언
자료형 배열이름;
생성
배열이름 = new 자료형[길이];
초기화
배열이름[인덱스] = 값;
...
출력
char 배열을 제외하면 배열이름만으로 바로 출력할 수 없다. 배열의 주소가 출력된다.
배열이름[인덱스] 로 접근하여 출력한다.
💻백준 2447: 별찍기 - 10
위 그림과 같은 형식으로 별찍기를 수행한다. 27을 입력했을 때이다.
전체 크기를 N이라고 했을 때, 공백인 가운데 n/3 크기의 정사각형이 공백, 주위를 n/3의 동일한 패턴이 감싸고있다. 각 (n/3)의 패턴은 다시 가운데 공백, 주위를 (n/3) /3 크기의 패턴이 감싸고있는 형식이다.
row 1, col 1 위치가 공백이다.
공백 위치는 동작 수행x, 나머지 위치는 star 메소드에 n/3, 각 패턴의 왼쪽 위의 위치를 넘겨 호출한다.
/* boj 2447 recursive n/3 star */
static char[][] a;
static void star(int n, int row, int col) {
if(n == 1) {
a[col][row] = '*';
return;
}
int tmp = n/3;
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
if(i == 1 && j == 1)
continue;
/* 3x3 패턴의 row,col을 tmp와 곱해 전체에서 row, col 구함*/
star(tmp, row + (tmp*j), col+(tmp*i));
}
}
}
메인 메소드
배열 공백으로 초기화 후 star 메소드 호출
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
a = new char[n][n];
for(int i = 0; i < n;i++) {
Arrays.fill(a[i], ' ');
}
star(n, 0, 0);
for(int i = 0; i < n; i++) {
System.out.println(a[i]);
}
☕️ 잡담
별찍기 어려웠다..
고민하다가 다른 분들 코드 참고해서 했다😂
오늘은 배열 배웠다.
try-catch문은 완전히 까먹었다. 강사님이 언급만 하셔서 찾아봐야겠다.
'TIL' 카테고리의 다른 글
220311: 코테 준비🔥 (0) | 2022.03.11 |
---|---|
220310 (0) | 2022.03.10 |
220304 (0) | 2022.03.04 |
220303: 자바 가위바위보 (0) | 2022.03.03 |
220302: JAVA 클래스, 생성자 (0) | 2022.03.02 |
댓글