본문 바로가기

알고리즘/백준

백준1388-바닥장식(브론즈1)

반응형

문제출처 : https://www.acmicpc.net/problem/1388

 

1388번: 바닥 장식

형택이는 건축가이다. 지금 막 형택이는 형택이의 남자 친구 기훈이의 집을 막 완성시켰다. 형택이는 기훈이 방의 바닥 장식을 디자인했고, 이제 몇 개의 나무 판자가 필요한지 궁금해졌다. 나��

www.acmicpc.net

문제풀이) 한개의 나무를 증가 후 '-' 을 만나면 오른쪽으로 '-' 를 만날때까지 색칠 하면서 계속 이동 '|' 을 만나면 아래로 색칠하면서 이동. 색칠 된 곳은 건너뛰면 됨

 

#include <iostream>

using namespace std;

char floor[110][110];
int visit[110][110];

int n,m;

void f(int y,int x,int dir)
{
    if(y>=n || x>=m) return;

    if(visit[y][x]) return;
    if(dir==0)
    {
        if(floor[y][x]!='-') return;
    }
    else
    {
        if(floor[y][x]!='|') return;
    }
    visit[y][x]=1;
    if(dir==0)
    {
        f(y,x+1,dir);
    }
    else
    {
        f(y+1,x,dir);
    }
}

int main()
{
    int cnt=0;

    cin >>n >> m;

    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++) cin >> floor[i][j];
    }

    for(int i=0;i<n;i++)
    {
        for(int j=0;j<m;j++)
        {
            if(!visit[i][j])
            {
                cnt++;
                if(floor[i][j]=='-') f(i,j,0);
                else f(i,j,1);
            }
        }
    }

    cout << cnt;

    return 0;
}
반응형