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분 가량 소요하긴 했지만 어찌저찌 좌표를 구해서 정답이 나오길래 두근두근 설레이는 마음으로 제출했으나..
?
이 후로 한 시간을 넘게 더 붙잡았지만 해결 할 수 없었다... 아 너무 아쉬운데
내일 다시 풀어봐야겠다.