본문 바로가기
TIL

220307: 자바 배열

by 김비누! 2022. 3. 7.

📝자바 배열

배열은 같은 자료형의 데이터가 연속적으로 구성되어있는 자료구조이다.
인덱스와 대응되며 인덱스는 0부터 시작한다.

선언

자료형 배열이름;

생성

배열이름 = new 자료형[길이];

초기화

배열이름[인덱스] = 값;
...

출력

char 배열을 제외하면 배열이름만으로 바로 출력할 수 없다. 배열의 주소가 출력된다.
배열이름[인덱스] 로 접근하여 출력한다.

 

💻백준 2447: 별찍기 - 10

백준 2447

위 그림과 같은 형식으로 별찍기를 수행한다. 27을 입력했을 때이다.

전체 크기를 N이라고 했을 때, 공백인 가운데 n/3 크기의 정사각형이 공백, 주위를 n/3의 동일한 패턴이 감싸고있다. 각 (n/3)의 패턴은 다시 가운데 공백, 주위를 (n/3) /3 크기의 패턴이 감싸고있는 형식이다.

3x3 패턴

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

댓글