티스토리 뷰

색종이 - 2 성공출처분류

시간 제한메모리 제한제출정답맞은 사람정답 비율

1 초 128 MB 2731 1199 1029 45.330%

문제

가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 색종이가 붙은 검은 영역의 둘레의 길이를 구하는 프로그램을 작성하시오.

예를 들어 흰색 도화지 위에 네 장의 검은색 색종이를 <그림 1>과 같은 모양으로 붙였다면 검은색 영역의 둘레는 96 이 된다.

입력

첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변과 도화지의 왼쪽 변 사이의 거리이고, 두 번째 자연수는 색종이의 아래쪽 변과 도화지의 아래쪽 변 사이의 거리이다. 색종이의 수는 100이하이며, 색종이가 도화지 밖으로 나가는 경우는 없다. 

출력

첫째 줄에 색종이가 붙은 검은 영역의 둘레의 길이를 출력한다.

예제 입력 1 복사

4 3 7 5 2 15 7 13 14

예제 출력 1 복사

96

출처

Olympiad > 한국정보올림피아드 > 한국정보올림피아드시․도지역본선 > 지역본선 2007 > 중등부 2번

  • 잘못된 데이터를 찾은 사람: tncks0121

알고리즘 분류

사이트 : 2567번: 색종이 - 2 (acmicpc.net)


나의 풀이

먼저 앞에서 풀었던 색종이 문제를 응용했다. 바뀐건 도화지 배열 크기를 101로 둔다.

1. 색종이가 있는 공간에는 1로 넣어준다.

2. 도화지는 양수이므로 i,j값은 0보다 크다.

3.. 경계에 있는 4면이 있을텐데 각각을 검사해주며 if문을 4개를 줘서 색종이의 상하좌우가 0이면 그것을 경계로 인식하여 cnt++해준다. 

4. 둘레 cnt 개수 출력

import java.util.*;

//색칠된건 1 안된건 0 이므로
//세로로 봤을 때 (x축)
public class Main {
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		int paper[][] = new int[101][101]; //도화지 면적은 가로세로100
		int n = sc.nextInt();
		int cnt = 0; //둘레 카운트

		
		for(int k = 0; k < n; k++) { //n = 색종이 개수
			int x = sc.nextInt();
			int y = sc.nextInt();
				
			for(int i = x; i <x + 10; i++ ) {
				for(int j = y; j < y + 10; j++) {
					if(paper[i][j] == 1) {
						continue;
					}
					paper[i][j] = 1; //색종이면 1값 줌
					
				}
			}
		} //색종이 값 1로 칠해주는 반복문
			
		for(int i = 0; i < paper.length; i++ ) {
			for(int j = 0; j < paper.length; j++) {
				if(i > 0 && j > 0){ 
					if(paper[i][j] == 1) {
						if(paper[i][j-1] == 0)  //색종이의 좌변
							cnt++;
						if(paper[i+1][j] == 0) //하
							cnt++;
						if(paper[i][j+1] == 0) //우
							cnt++;
						if(paper[i-1][j] == 0) //상
							cnt++;
						
					
					}
                }
			
			}
		}
		
	        System.out.println(cnt);
	        
	        
	    
	}
}

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 6603. 로또  (0) 2021.03.04
[SWEA] 4865. 글자수  (0) 2021.02.20
[백준] 1244번. 스위치켜고 끄기  (0) 2021.02.02
[백준] 2563. 색종이  (0) 2021.01.29
[백준] 2309. 일곱난쟁이  (0) 2021.01.29
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
29 30 31
글 보관함