[2667] 단지번호붙이기, C

2019. 6. 28. 22:09·DEV/PS

한줄 후기 - 이게 초등부 문제라구요?

 

https://www.acmicpc.net/problem/2667

 

2667번: 단지번호붙이기

<그림 1>과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집들의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. <그림 2>는 <그림 1>을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수

www.acmicpc.net

 

 

분류가 DFS, BFS 여서 그걸로 했더니 모르겠어서 그냥 보이는대로 풀었다..

 

C 코드 

#include <stdio.h>
#define MAX_SIZE 630
int search(int v, int e);
int arr[30][30]={0};
int check[MAX_SIZE] = {0};
int n, cnt=0;
int main(){
	int i, j, temp;
	scanf("%d", &n);
	for(i=0; i<n; i++){
		for(j=0; j<n; j++){
			scanf("%1d", &arr[i][j]);
		}
	}

	for(i=0; i<n; i++){
		for(j=0; j<n; j++){
			if(arr[i][j]==1){
				search(i,j);
				cnt++;
			}
		}
	}
	for(i=0; i<cnt; i++){
		for(j=0; j<cnt-1; j++){
			if(check[j]> check[j+1]){
				temp = check[j];
				check[j] = check[j+1];
				check[j+1] = temp;
			}
		}
	}
	printf("%d\n",cnt);
	for(i=0; i<cnt; i++) 	printf("%d\n", check[i]);
 	return 0;
}
int search(int v, int e){
	if(arr[v][e-1] == 1){
		check[cnt]++;
		arr[v][e-1]=2;
		search(v, e-1);
	}
	if(arr[v][e+1] == 1){
		check[cnt]++;
		arr[v][e+1]=2;
		search(v, e+1);
	}
	if(arr[v-1][e] == 1){
		check[cnt]++;
		arr[v-1][e]=2;
		search(v-1,e);
	}
	if(arr[v+1][e] == 1){
		check[cnt]++;
		arr[v+1][e]=2;
		search(v+1,e);
	}
	if(arr[v][e] == 1) 	check[cnt]++;
	return;
}

 

'DEV > PS' 카테고리의 다른 글

[13163] 닉네임에 갓 붙이기, C  (0) 2019.07.15
[1713] 후보 추천하기, C  (0) 2019.07.15
[15904] UCPC는 무엇의 약자일까? , C  (0) 2019.07.05
[2841] 외계인의 기타연주, C  (0) 2019.07.04
[12790] Mini Fantasy War, C  (0) 2019.07.03
'DEV/PS' 카테고리의 다른 글
  • [1713] 후보 추천하기, C
  • [15904] UCPC는 무엇의 약자일까? , C
  • [2841] 외계인의 기타연주, C
  • [12790] Mini Fantasy War, C
jobchae
jobchae
말하는 감자지만, 코드를 끄적이는 Node.js 백엔드 개발자입니다.
  • jobchae
    JOBCHAE
    jobchae
  • 전체
    오늘
    어제
    • 🚀 JOBCHAE (177)
      • DEV (146)
        • PS (108)
        • Node.js (12)
        • React (3)
        • docker (1)
        • 잡다한 개발 일지 (20)
        • injection (1)
        • CI CD (0)
        • JS, TS (1)
      • 축구 (0)
      • 일상 (19)
      • 영화 (3)
      • 음악 (8)
  • 블로그 메뉴

    • 💻 Github
    • 🙋🏻 Linkedin
    • 📖 방명록
  • 링크

    • PS Github
  • 공지사항

  • 인기 글

  • 태그

    Nest
    리액트
    일상
    Express
    react
    slack
    회고
    BFS
    렛츠락페스티벌
    솝트
    SOPT
    DFS
    슬랙
    앱잼
    알고리즘
    nodejs
    슬랙봇
    aws
    node.js
    백준
    우선순위큐
    typescript
    이분탐색
    Nest.js
    PS
    GitHub
    위상정렬
    DP
    boj
    mongoDB
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
jobchae
[2667] 단지번호붙이기, C
상단으로

티스토리툴바