728x90
반응형
📌색종이
가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다.
이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다.
이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 색종이가 붙은 검은 영역 넓이를 구하는 프로그램을 작성하시오.
예를 들어 흰색 도화지 위에 세 장의 검은색 색종이를 그림과 같은 모양으로 붙였다면 검은색 영역의 넓이는 260이 된다.
<도화지 위에 놓인 세 색종이>
입력 형식
첫 줄에는 테스트케이스의 수 T가 주어진다.
각 테스트케이스의 첫 줄에는 색종이의 수 N이 1이상 100이하의 자연수로 공백없이 주어진다.
이후 N줄에 걸쳐서 각 색종이의 정보가 공백으로 구분된 90보다 작거나 같은 두 자연수로 주어진다.
- 첫 번째 숫자는 색종이의 왼쪽 변과 도화지의 왼쪽 벽 사이의 거리이다
- 두 번째 숫자는 색종이의 아랫쪽 변과 도화지의 아랫쪽 변 사이의 거리이다.
- 모든 색종이는 도화지의 영역을 벗어나지 않는다.
출력 형식
각 테스트케이스에 대하여 색종이가 차지하는 넓이를 한 줄에 공백없는 정수로 출력한다.
예시
- 입력
2
3
37
157
52
4
37
52
157
1314
- 출력
260
336
코드 풀이
/**
* 색종이들이 덮고 있는 영역의 총 넓이를 계산하는 함수
*
* @param papers
* @param n
* @return
*/
public static int getCoveredArea(Paper[] papers, int n)
{
int answer = 0; //색종이들이 덮은 영역의 총 넓이
int [][] border = new int[101][101];
for( Paper p : papers ){
for( int row = p.bottomRow; row <= p.topRow; row ++){
for( int col = p.leftColumn; col <= p.rightColumn; col ++){
border[row][col] += 1;
}
}
}
for( int row = 0; row <= 100; row ++){
for( int col = 0; col <= 100; col ++){
if(border[row][col] >= 1){
answer++;
}
}
}
return answer;
}
728x90
반응형
'TEAM STUDY > 알고리즘 코딩 테스트 스터디' 카테고리의 다른 글
5회차 - 알고리즘 기록 : 팬미팅 (0) | 2022.06.13 |
---|---|
5회차 - 알고리즘 기록 : 과유불금 (0) | 2022.06.13 |
4회차 - 알고리즘 기록 : 피보나치 나머지 (0) | 2022.06.13 |
4회차 - 알고리즘 기록 : 응모 (0) | 2022.06.13 |
4회차 - 알고리즘 기록 : 페인트 (0) | 2022.06.13 |