Codeup 1098 review

calis_ws·2023년 5월 7일
0
post-custom-banner

https://codeup.kr/problem.php?id=1098

입력

첫 줄에 격자판의 세로(h), 가로(w) 가 공백을 두고 입력되고,
두 번째 줄에 놓을 수 있는 막대의 개수(n)
세 번째 줄부터 각 막대의 길이(l), 방향(d), 좌표(x, y)가 입력된다.

출력

모든 막대를 놓은 격자판의 상태를 출력한다.
막대에 의해 가려진 경우 1, 아닌 경우 0으로 출력한다.
단, 각 숫자는 공백으로 구분하여 출력한다.

저번 문제와 같이 2차원 배열과 반복문을 이용한 문제였기 때문에 이번에도 스스로 풀어보고 싶어서 주석으로 먼저 단계를 나눠놓고 풀어보았다.

import java.util.Scanner;

public class Codeup1098 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // 5 * 5 배열 생성
        int[][] arr = new int[sc.nextInt()][sc.nextInt()];
        // 막대의 개수 num
        int num = sc.nextInt();
        // 막대의 길이 length

        // 0 이면 가로 1 이면 세로로 나열
        // x, y 좌표 입력
        for (int i = 0; i < num; i++) {
            int length = sc.nextInt();
            int row = sc.nextInt();
            int x = sc.nextInt();
            int y = sc.nextInt();
            if (row == 0) {
                for (int j = 0; j < length; j++) {
                    if (arr[x - 1][j] == 0) {
                        arr[x - 1][j] = 1;
                    }
                }
            } else if (row == 1) {
                for (int j = 1; j <= length; j++) {
                    if (arr[j][y - 1] == 0) {
                        arr[j][y - 1] = 1;
                    }
                }
            }
        }
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr.length; j++) {
                System.out.printf("%d ", arr[i][j]);
            }
            System.out.println();
        }
    }
}

주석으로 적어두고 풀어보니 확실히 풀리긴 한다!!
근데 저 좌표 때문에 머리를 디지게 굴렸다.

x가 가로고 y가 세로인줄 알았는데 출력값이 계속 반대로 나오길래 바꿔봤더니 출력이 잘 나온다. 이 부분은 내일 멘토님께 여쭤봐야겠다.

약 1시간 30분 가량 소요하긴 했지만 어찌저찌 좌표를 구해서 정답이 나오길래 두근두근 설레이는 마음으로 제출했으나..

?

이 후로 한 시간을 넘게 더 붙잡았지만 해결 할 수 없었다... 아 너무 아쉬운데
내일 다시 풀어봐야겠다.

profile
반갑습니다람지
post-custom-banner

0개의 댓글