반응형
    
    
    
  -문제

-코드
#include<queue>
#include<iostream>
using namespace std;
int dx[4] = {1,-1,0,0};
int dy[4] = { 0,0,1,-1 };
int main()
{
	int n, m, v_cnt=0, o_cnt=0, v=0,o=0;
	cin >> n >> m;
	char map[250][250];
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			cin >> map[i][j];
		}
	}
	queue<pair<int,int> > q;
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			if (map[i][j] == '#') continue;
			if (map[i][j] != '#')
			{
				v_cnt = 0;
				o_cnt = 0;
				if (map[i][j] == 'v') v_cnt = 1;
				if (map[i][j] == 'o') o_cnt = 1;
				q.push({i,j});
				map[i][j] = '#';
				while (!q.empty())
				{
					pair<int, int> tmp = q.front();
					q.pop();
					for (int k = 0; k < 4; k++)
					{
						int xx = tmp.first + dx[k];
						int yy =  tmp.second + dy[k];
						if (xx >=n || yy >= m || xx<0 || yy < 0) continue;
						if (map[xx][yy] == '.')
						{
							q.push({xx,yy});
							map[xx][yy] = '#';
						}
						else if (map[xx][yy] == 'v')
						{
							q.push({ xx,yy });
							map[xx][yy] = '#';
							v_cnt++;
						}
						else if (map[xx][yy] == 'o')
						{
							q.push({ xx,yy });
							map[xx][yy] = '#';
							o_cnt++;
						}
					}
				}
				if (v_cnt < o_cnt) v_cnt = 0;
				else o_cnt = 0;
				v += v_cnt;
				o += o_cnt;
			}
		}
		
	}
	cout << o << ' ' << v;
	return 0;
}반응형
    
    
    
  '이론 > 코딩테스트' 카테고리의 다른 글
| [프로그래머스] level2 구명보트 (그리디 + 투포인터) (0) | 2022.08.29 | 
|---|---|
| [백준] 1325번 효율적인 해킹 (DFS) (0) | 2022.08.27 | 
| [백준] 1388번 바닥 장식 (BFS) (0) | 2022.08.26 | 
| [백준] 2110번 공유기 설치 (이분 탐색) (0) | 2022.08.25 | 
| [백준] 16401번 과자 나눠주기 (이분 탐색) (0) | 2022.08.25 | 
 
                    
                   
                    
                   
                    
                  