๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”ฅ PS(Problem Solving) ๐Ÿ”ฅ/BOJ

[BOJ] #2667 ๋‹จ์ง€๋ฒˆํ˜ธ๋ถ™์ด๊ธฐ

by dar0m! 2019. 9. 4.
์‹œ๊ฐ„ ์ œํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ์ •๋‹ต ๋น„์œจ
1 ์ดˆ 128 MB 38.045 %

 

 

2667๋ฒˆ: ๋‹จ์ง€๋ฒˆํ˜ธ๋ถ™์ด๊ธฐ

<๊ทธ๋ฆผ 1>๊ณผ ๊ฐ™์ด ์ •์‚ฌ๊ฐํ˜• ๋ชจ์–‘์˜ ์ง€๋„๊ฐ€ ์žˆ๋‹ค. 1์€ ์ง‘์ด ์žˆ๋Š” ๊ณณ์„, 0์€ ์ง‘์ด ์—†๋Š” ๊ณณ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ฒ ์ˆ˜๋Š” ์ด ์ง€๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์—ฐ๊ฒฐ๋œ ์ง‘๋“ค์˜ ๋ชจ์ž„์ธ ๋‹จ์ง€๋ฅผ ์ •์˜ํ•˜๊ณ , ๋‹จ์ง€์— ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์ด๋ ค ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ์—ฐ๊ฒฐ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์€ ์–ด๋–ค ์ง‘์ด ์ขŒ์šฐ, ํ˜น์€ ์•„๋ž˜์œ„๋กœ ๋‹ค๋ฅธ ์ง‘์ด ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค. ๋Œ€๊ฐ์„ ์ƒ์— ์ง‘์ด ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” ์—ฐ๊ฒฐ๋œ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. <๊ทธ๋ฆผ 2>๋Š” <๊ทธ๋ฆผ 1>์„ ๋‹จ์ง€๋ณ„๋กœ ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์ธ ๊ฒƒ์ด๋‹ค. ์ง€๋„๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ๋‹จ์ง€์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , ๊ฐ ๋‹จ์ง€์— ์†ํ•˜๋Š” ์ง‘์˜ ์ˆ˜

www.acmicpc.net

๋™์„œ๋‚จ๋ถ ๋„ค ๋ฐฉํ–ฅ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์ง‘๋“ค์˜ ๋ชจ์ž„์„ ๋‹จ์ง€๋ผ๊ณ  ํ•œ๋‹ค. ๋‹จ์ง€์— ํ•ด๋‹นํ•˜๋Š” ์ง‘์˜ ์ˆ˜๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

์ž…๋ ฅ์ด ๋„์–ด์“ฐ๊ธฐ ์—†์ด ๋ฌธ์ž์—ด๋กœ ์ฃผ์–ด์ ธ string์œผ๋กœ ๋ฐ›์•„ int๋ฐฐ์—ด์— ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค.
์ด์ค‘ ํฌ๋ฌธ์„ ๋„๋Š”๋ฐ ํ•ด๋‹น ์œ„์น˜์— ์ง‘์ด ์žˆ์œผ๋ฉด ํ•˜๋‚˜์˜ ๋‹จ์ง€๋กœ ๊ฐ„์ฃผํ•˜๊ณ  dfs๋ฅผ ๋Œ์•„ ๋‹จ์ง€ ๋‚ด์˜ ์ง‘์˜ ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค. ์ด ๋•Œ chk ๋ฐฐ์—ด์„ ์ด์šฉํ•˜์—ฌ ์ค‘๋ณต์„ ๋ฐฉ์ง€ํ•œ๋‹ค. 

ํฌ๋ฌธ์ด ๋๋‚˜๋ฉด ๋ชจ๋“  ๋‹จ์ง€๋ฅผ ํƒ์ƒ‰ํ•œ ๊ฒƒ์ด๋ฏ€๋กœ ์ €์žฅํ•ด๋†จ๋˜ ๋‹จ์ง€ ๋‚ด์˜ ์ง‘์˜ ์ˆ˜๋ฅผ ์ •๋ ฌํ•˜์—ฌ ์ถœ๋ ฅํ•œ๋‹ค.

 

๋ฉ”๋ชจ๋ฆฌ ์‹œ๊ฐ„
1996 KB 0 ms
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string.h>
#include<string>
#include<vector>
using namespace std;
 
int di[] = { 0,0,1,-1 };
int dj[] = { 1,-1,0,0 };
int n, cnt;
int arr[26][26];
int chk[26][26];
vector<int> v;
 
void dfs(int r, int c) {
    cnt++;
    chk[r][c] = 1;
    for (int i = 0; i < 4; i++) {
        int nextr = r + di[i];
        int nextc = c + dj[i];
        if (nextr >= 0 && nextr < n && nextc >= 0 && nextc < n) {
            if (arr[nextr][nextc] && !chk[nextr][nextc]) {
                dfs(nextr, nextc);
            }
        }
    }
}
 
int main() {
    scanf("%d"&n);
    string s;
    for (int i = 0; i < n; i++) {
        cin >> s;
        for (int j = 0; j < s.length(); j++) {
            arr[i][j] = s[j] - '0';
        }
    }
 
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (arr[i][j] && !chk[i][j]) {
                dfs(i, j);
                v.push_back(cnt);
                cnt = 0;
            }
        }
    }
    sort(v.begin(), v.end());
    printf("%d\n", v.size());
    for (int i = 0; i < v.size(); i++) {
        printf("%d\n", v[i]);
    }
 
    return 0;
}
cs

 

'๐Ÿ”ฅ PS(Problem Solving) ๐Ÿ”ฅ > BOJ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BOJ] #1541 ์žƒ์–ด๋ฒ„๋ฆฐ ๊ด„ํ˜ธ  (0) 2019.09.04
[BOJ] #2573 ๋น™์‚ฐ  (0) 2019.09.04
[BOJ] #2644 ์ดŒ์ˆ˜๊ณ„์‚ฐ  (0) 2019.09.04
[BOJ] #6603 ๋กœ๋˜  (0) 2019.09.04
[BOJ] #14502 ์—ฐ๊ตฌ์†Œ  (0) 2019.09.04

๋Œ“๊ธ€