6kitty 6kitty

⎛⎝ ≽ > ⩊ < ≼ ⎠⎞

6kitty

260210 TIL

Today I learned : BFS 1문제 풀이..

오늘 할 일

  1. 파일 취합해서 조원들한테 컨펌 받기
  2. 근무시간에 바킹독 문제집 큐~BFS 뽀개기 -> 시간 없어서 못함..
  3. 오늘은 ㄹㅇ 경험기술 정리하고 세미나 지원
  4. BFS 마무리

1926 : 그림

#include <bits/stdc++.h>
using namespace std;

#define X first
#define Y second

int board[501][501];
bool vis[501][501];

int dx[4]={-1,0,1,0};
int dy[4]={0,-1,0,1};

int main(void){
    ios::sync_with_stdio(0);
    cin.tie(0);

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

    int max_paint=0;
    queue<int> paint;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(board[i][j]==0 || vis[i][j]==1) continue;
            vis[i][j]=1;
            queue<pair<int,int>> Q;
            Q.push({i,j});
            int vis_sum=1;

            while(!Q.empty()){
                pair<int,int> cur=Q.front(); Q.pop();
                for(int dir=0;dir<4;dir++){
                    int nx=cur.X+dx[dir];
                    int ny=cur.Y+dy[dir];

                    if(nx<0 || nx >(n-1) || ny<0 || ny > m-1) continue;
                    if(board[nx][ny]==0) continue;
                    if(vis[nx][ny]==1) continue;
                    
                    vis[nx][ny]=1;
                    Q.push({nx,ny});
                    vis_sum++;
                }
            }
            paint.push(vis_sum);
            if(max_paint<vis_sum) max_paint=vis_sum;
        }
    }
    cout<<paint.size()<<'\n'<<max_paint;

}

나 혼자서 풀지는 못하고 BFS 예제 보면서 응용해 풀었다.. 코드 작성에 익숙해져야 할듯.. 이따가 집 가서 기본 코드 한 번 더 복습하기.


회고

오늘은 간만에 점검 업무 했다. 너무 간만에 해서 버벅거렸지만 퇴근 전에 끝내서 전달드렸다 ㅎㅎ 옆부서 과장님이 알려주신 한글의 스타일 서식 복붙 정말 요긴하게 써서 파일 취합했다. alt+CBD / alt+C.. 퇴행하고 가장 기억에 남을 단축키이다. 사실 엑셀의 중복 항목 제거 단축키도 많이 썼는데 이건 생각이 잘 안 나네 ㅎ ctrl+shift+M이었나? 뭐 눌러보면 알것지..

근데 BFS 늪에서 빠져나와야 하는데 영원히 한 문제씩 산 넘어 산이다… 며칠을 붙잡고 있는건지 일단 바킹독은 빠르게 나가고 빠르게 체화하는 방법 먼저 한 후에 고민하는 시간을 가져야 할 거 같다. 이대로라면 영원히 완강을 못해………