728x90
반응형
https://www.acmicpc.net/problem/2563
2563번: 색종이
첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변
www.acmicpc.net
문제
분석
1. 101x101의 boolean 배열을 만든다.
2. x, y 값을 받고 x+9, y+9까지 사각형 모양을 true로 바꾼다.
3. true 값의 개수를 세서 출력한다.
처음 작성한 코드
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int result = 0;
boolean[][] paper = new boolean[101][101];
for (int i = 0; i < num; i++) {
int x = sc.nextInt();
int y = sc.nextInt();
for (int j = x; j < x + 10; j++) {
for (int k = y; k < y + 10; k++) {
paper[j][k] = true;
}
}
}
for (int i = 0; i < 101; i++) {
for (int j = 0; j < 101; j++) {
if (paper[i][j] == true) {
result += 1;
}
}
}
System.out.println(result);
}
}
분석한 내용대로 코드는 잘 짰지만 마지막에 따로 for문을 한 번 더 쓰지않고 paper[j][k]를 true로 바꿀 때 result++를 해주면 코드를 간결화 할 수 있다는 것을 알았다.
수정한 코드
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int result = 0;
boolean[][] paper = new boolean[101][101];
for (int i = 0; i < num; i++) {
int x = sc.nextInt();
int y = sc.nextInt();
for (int j = x; j < x + 10; j++) {
for (int k = y; k < y + 10; k++) {
if (!paper[j][k]) {
paper[j][k] = true;
result++;
}
}
}
}
System.out.println(result);
}
}
728x90
반응형
'백준[BOJ]' 카테고리의 다른 글
[백준/자바] - 3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰 (0) | 2023.10.28 |
---|---|
[백준/BOJ-자바/Java] 10798: 세로 읽기 (0) | 2023.10.18 |
[백준/BOJ - 자바/Java] 2566: 최댓값 (0) | 2023.10.16 |
[백준/BOJ - 자바/Java] 2884번: 알람 시계 (0) | 2023.09.25 |
[백준/BOJ - 자바/Java] 10807번: 개수 세기 (0) | 2023.09.17 |