๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”ฅ PS(Problem Solving) ๐Ÿ”ฅ/nํšŒ๋…

[BOJ] #1012 ์œ ๊ธฐ๋† ๋ฐฐ์ถ”

by dar0m! 2020. 5. 3.
์‹œ๊ฐ„ ์ œํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ์ •๋‹ต ๋น„์œจ
 1์ดˆ  512MB 34.545%

 

 

1012๋ฒˆ: ์œ ๊ธฐ๋† ๋ฐฐ์ถ”

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

www.acmicpc.net

 

๋ฌธ์ œ

ํ•œ๋‚˜๊ฐ€ ๋ฐฐ์ถ”๋ฅผ ์žฌ๋ฐฐํ•˜๋Š” ๋•…์€ ๊ณ ๋ฅด์ง€ ๋ชปํ•ด์„œ ๋ฐฐ์ถ”๋ฅผ ๊ตฐ๋ฐ๊ตฐ๋ฐ ์‹ฌ์–ด๋†“์•˜๋‹ค. ๋ฐฐ์ถ”๋“ค์ด ๋ชจ์—ฌ์žˆ๋Š” ๊ณณ์—๋Š” ๋ฐฐ์ถ”ํฐ์ง€๋ ์ด๊ฐ€ ํ•œ ๋งˆ๋ฆฌ๋งŒ ์žˆ์œผ๋ฉด ๋˜๋ฏ€๋กœ ์„œ๋กœ ์ธ์ ‘ํ•ด์žˆ๋Š” ๋ฐฐ์ถ”๋“ค์ด ๋ช‡ ๊ตฐ๋ฐ์— ํผ์ ธ์žˆ๋Š”์ง€ ์กฐ์‚ฌํ•˜๋ฉด ์ด ๋ช‡ ๋งˆ๋ฆฌ์˜ ์ง€๋ ์ด๊ฐ€ ํ•„์š”ํ•œ์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฐ์ถ”๋ฐญ์ด ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉด ์ตœ์†Œ 5๋งˆ๋ฆฌ์˜ ๋ฐฐ์ถ”ํฐ์ง€๋ ์ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

(0์€ ๋ฐฐ์ถ”๊ฐ€ ์‹ฌ์–ด์ ธ ์žˆ์ง€ ์•Š์€ ๋•…์ด๊ณ , 1์€ ๋ฐฐ์ถ”๊ฐ€ ์‹ฌ์–ด์ ธ ์žˆ๋Š” ๋•…์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.)

ํ•ด๊ฒฐ

key point, DFS๋กœ ๊ทธ๋ž˜ํ”„๊ฐ€ ๋ช‡ ๊ฐœ ์žˆ๋Š”์ง€ ํ™•์ธ
  1. ๋ฐฐ์ถ”๊ฐ€ ์žˆ๋Š” ๊ณณ์„ 1๋กœ ์ฑ„์šฐ๊ณ 
  2. ์™ผ์ชฝ ์ƒ๋‹จ๋ถ€ํ„ฐ ๋ฐฐ์ถ”๋ฐญ์„ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ๋ฐฐ์ถ”๊ฐ€ ์žˆ๋‹ค๋ฉด dfs ํ•จ์ˆ˜์— ๊ฐ„๋‹ค.
  3. ์ƒํ•˜์ขŒ์šฐ 4๋ฐฉํ–ฅ์— ๋ฐฐ์ถ”๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ฐฉ๋ฌธํ•œ๋‹ค.
  4. ๋ฐฉ๋ฌธํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๋ฐฐ์ถ”๊ฐ€ ์‹ฌ์–ด์ ธ ์žˆ์ง€ ์•Š์€ ๋•…์ธ๊ฒƒ ์ฒ˜๋Ÿผ 0์œผ๋กœ ํ‘œ์‹œํ•ด์ค€๋‹ค.
  5. ํ•จ์ˆ˜์—์„œ ๋‚˜์˜ค๋ฉด ans++ํ•ด์„œ ๋ฐฐ์ถ”๋“ค์ด ๋ชจ์—ฌ์žˆ๋Š” ๊ณณ์„ ์นด์šดํŠธํ•œ๋‹ค. 

 

์ฝ”๋“œ

๋ฉ”๋ชจ๋ฆฌ ์‹œ๊ฐ„
 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
#include <iostream>
#include <string.h>
using namespace std;
int t, n, m, k, arr[55][55], ans;
int dx[] = { 0,0,1,-1 }, dy[] = { 1,-1,0,0 };
void dfs(int x, int y) {
    arr[x][y] = 0;
    for (int k = 0; k < 4; k++) {
        int nx = x + dx[k], ny = y + dy[k];
        if (nx < 0 || ny < 0 || nx >= n || ny >= m || !arr[nx][ny]) continue;
        dfs(nx, ny);
    }
 
}
int main() {
    scanf("%d"&t);
    while (t--) {
        scanf("%d%d%d"&n, &m, &k);
        for (int i = 0, a, b; i < k; i++) {
            scanf("%d%d"&a, &b);
            arr[a][b] = 1;
        }
 
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if (arr[i][j]) {
                    dfs(i, j);
                    ans++;
                }
            }
        }
        printf("%d\n", ans);
        ans = 0;
        memset(arr, 0sizeof(arr));
    }
    return 0;
}
cs

 

ํ›„๊ธฐ

  • ๊ทธ๋ ‡๊ฒŒ ํ‹€๋ฆฌ์ง€ ๋ง์ž๊ณ  ๋‹ค์งํ–ˆ๋˜ memset → string.h ์—์„œ ํ‹€๋ ธ๊ณ 
  • or์—ฐ์‚ฐ์—์„œ | ํ•˜๋‚˜๋งŒ์จ์„œ

์ด ์ปดํŒŒ์ผ์—๋Ÿฌ 2๋ฒˆ ํ‹€๋ฆฌ๊ณ  ๋งž์•˜๋‹ค ์œผ์œฝ.. ํ’€๊ธฐ๋Š” ๊ธˆ๋ฐฉ ํ’€์–ด์„œ ๋‹คํ–‰.

  • ์ด์ „๊ณผ ๋‹ค๋ฅด๊ฒŒ chk๋ฐฐ์—ด์„ ๊ตณ์ด ์“ฐ์ง€ ์•Š์•„๋„ ํ’€๋ฆฌ๋Š” ๊ฒƒ์„ ์บ์น˜ํ•˜๊ณ  arr๋ฐฐ์—ด ํ•˜๋‚˜๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค.

 

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

[BOJ] #1158 ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ  (0) 2020.05.02
[BOJ] #14502 ์—ฐ๊ตฌ์†Œ  (0) 2020.04.23

๋Œ“๊ธ€