티스토리 뷰
문제
가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 색종이가 붙은 검은 영역의 넓이를 구하는 프로그램을 작성하시오.
예를 들어 흰색 도화지 위에 세 장의 검은색 색종이를 그림과 같은 모양으로 붙였다면 검은색 영역의 넓이는 260이 된다.
입력
첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변과 도화지의 왼쪽 변 사이의 거리이고, 두 번째 자연수는 색종이의 아래쪽 변과 도화지의 아래쪽 변 사이의 거리이다. 색종이의 수는 100 이하이며, 색종이가 도화지 밖으로 나가는 경우는 없다
출력
첫째 줄에 색종이가 붙은 검은 영역의 넓이를 출력한다.
#include <stdio.h>
int main() {
int a[100][100]={0, };
int n, b, c, sum=0;
scanf("%d", &n);
for(int i=0; i<n; i++){
scanf("%d %d", &b, &c);
for(int k=0; k<100; k++){
for(int j=0; j<100; j++){
if(a[b][c] == a[k][j]){
for(int l=0; l<10; l++){
for(int m=0; m<10; m++){
a[b+l][c+m]=1;
}
}
}
}
}
}
for(int i=0; i<100; i++){
for(int j=0; j<100; j++){
if(a[i][j]==0){
sum++;
}
}
}
printf("%d", 10000-sum);
return 0;
}
내가 푼 문제의 흐름: 색종이의 위치를 입력받은 후 색종이가 가리고 있는 부분은 2차원 배열을 써서 1로 바꾸고 아닌 부분은 배열을 0으로 초기화 시켰기 때문에 0이다. 그중에 1의 개수를 출력한다.
1. 색종이의 수를 입력 받고 색종이의 수 만큼 색종이를 붙일 위치를 입력받는다.
2. 첫번째 for문은 색종이의 수만큼 색종이의 붙일 위치를 입력받는다.
3. 두번째, 세번째 for문은 a[100][100]만큼 입력 받을수 있으니까 k, j를 각각 100번씩 반복한다 그러다 k, j가 입력받은 색종이의 위치 b,c 와 같으면 넓이가 100인 정사각형모향의 색종이를 덮는다.
4. 넓이가 100인 정사각형 모향의 색종이를 덮는 것을 l, m을 각각 10번씩 총 100번 반복해서 각각의 해당하는 a[b+l][c+m]의 배열의 위치에 1을 지정해 두었다.
5. 마지막으로 1의 개수를 출력하기 위해서 이중 for문을 사용해서 a[i][j]가 0일때 sum에 1씩 더해주고 총 배열의 개수인 10000에서 sum을 빼주면 붙인 색종이의 영역이 나온다.
실수: 마지막에 if (a[i][j]==1)일 때는 sum++를 해서 바로 붙인 색종이의 영역을 출력할수 있었는데 좀 돌아서 풀이했다.
'백준' 카테고리의 다른 글
(백준) 직사각형에서 탈출-1085 (0) | 2023.04.18 |
---|---|
(백준) 링-3036 (0) | 2023.04.18 |
(백준) 2444-별찍기 (0) | 2023.04.09 |
(백준) 3003-킹, 퀸, 룩, 비숍, 나이트, 폰 (0) | 2023.04.09 |
(백준) 11720-숫자의 합 (0) | 2023.04.09 |
- Total
- Today
- Yesterday
- 버퍼오버플로우
- 스택 버퍼 오버플로우
- 무료설치
- 점프킹설치
- 라우터
- 코드업
- 정적라우팅
- 게이트웨이
- jump king
- 힙오버플로우
- 라우팅
- 패킷트레이서
- 메트릭
- 포트포워딩
- github
- 오버플로우
- 점프킹
- 과제
- ospf config
- vmware pro
- 설정법
- vmware player
- vmware key
- 동적라우팅
- Brave
- dr/bdr
- 네트워크
- 디폴트라우팅
- 설치법
- ospf
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |