개발로그

[코드업] 기초 100제 자바 - 복습4 본문

코딩테스트

[코드업] 기초 100제 자바 - 복습4

라이언이 되자 2022. 8. 21. 16:53
728x90

코드업 100제 문제를 자바로 풀면서 헷갈렸던 부분에 대해서 정리한다.

 

[기초-2차원배열] 설탕과자 뽑기

 

문제  설명 * 

 

부모님과 함께 유원지에 놀러간 영일이는
설탕과자(설탕을 녹여 물고기 등의 모양을 만든 것) 뽑기를 보게 되었다.

길이가 다른 몇 개의 막대를 바둑판과 같은 격자판에 놓는데,

막대에 있는 설탕과자 이름 아래에 있는 번호를 뽑으면 설탕과자를 가져가는 게임이었다.
(잉어, 붕어, 용 등 여러 가지가 적혀있다.)





격자판의 세로(h), 가로(w), 막대의 개수(n), 각 막대의 길이(l),
막대를 놓는 방향(d:가로는 0, 세로는 1)과
막대를 놓는 막대의 가장 왼쪽 또는 위쪽의 위치(x, y)가 주어질 때,

격자판을 채운 막대의 모양을 출력하는 프로그램을 만들어보자.

 

코드 *

 

int h = Integer.parseInt(st.nextToken());
int w = Integer.parseInt(st.nextToken());

 

int[][] ba = new int[h + 1][w + 1];

        for(int i = 1; i <= h; i++) {
            for(int j = 1; j <= w; j++) {
                ba[i][j] = 0;
            }
        }

 

int n = Integer.parseInt(br.readLine());

        for(int i = 1; i <= n; i++) {
            st = new StringTokenizer(br.readLine());
            // 길이
            int l = Integer.parseInt(st.nextToken());
            // 방향 0 = x 축, 1 = y 축
            int d = Integer.parseInt(st.nextToken());
            int y = Integer.parseInt(st.nextToken());
            int x = Integer.parseInt(st.nextToken());

            if( d == 0 ) {
                for(int j = 1; j <= l; j++) {
                    ba[y][x++] = 1;
                }
            } else {
                for(int j = 1; j <= l; j++) {
                    ba[y++][x] = 1;
                }
            }
        }

 

 

PS) 이문제는 2차원 배열과 반복문 조건문을 활용하는 문제이고 

       l,d,x,y의 조건을 잘보면서 구현 하면 된다.

      수학의 행렬의 개념을 이해하고 보면 더좋다. 

      x축과 y축을 잘 지정해야 실제 문제를 풀고 배열에 값을 담고 출력할때 헷갈리지 않을것이다.

 

 

728x90