본문 바로가기

전체 글

(29)
[C++] BOJ-1012 문제풀이 배추를 찾은 후 BFS로 탐색 서로 떨어져 있는 배추를 찾을때마다 count 해주는 방식으로 문제 해결 #include #include using namespace std; int map[51][51]; int dx[4] = {0,0,-1,1}; // 상하좌우 int dy[4] = {1,-1,0,0}; queue q; int T,N,M,K; int X,Y; int bfs(){ int cnt = 0; for(int i = 0; i> N >> K; for(int i = 0; i> X >> Y; map[Y][X] = 1; } cout
[C++] BOJ-7576 문제풀이 다른 BFS 문제와 마찬가지로 queue에 x좌표와 y좌표를 넣으면서 BFS를 돌리면 된다. 날짜가 지날때마다 토마토가 들어있지 않은 경우가 아니라면 인접한 배열을 1로 교체해주었다. 다른 BFS 문제와 다른점은 이 문제에서는 익지 않은 토마토가 있을 수 있기 때문에 그 경우까지 생각해줘야 한다. 나같은 경우 BFS로 모든 맵을 돌린 후 마지막에 map 배열에 0이 하나라도 존재한다면 -1을 return을 해주는 조건문을 하나 더 추가해주었다. #include #include using namespace std; int dx[4] = {0,0,-1,1}; // 상하좌우 int dy[4] = {1,-1,0,0}; int N,M; int map[1001][1001]; int cnt; queue< p..
[C++] BOJ-4963 문제풀이 풀이 전에 풀었던 유기농배추가 비슷한 방식으로 풀었다. 다른점이 있다면 유기농배추 문제는 상하좌우 네 방향만 탐색했지만 이 문제는 대각선도 이어져 있다고 보기 때문에 8방향을 탐색했다. 나는 BFS로 풀었지만 다시 생각해보니 DFS로 코드를 짜는게 훨씬 더 효율적일 것 같은 생각이 들었다... #include #include using namespace std; queue q; int dx[8] = {0,0,1,-1,1,-1,1,-1}; int dy[8] = {1,-1,0,0,1,-1,-1,1}; int map[51][51]; int bfs(int N, int M){ int cnt = 0; for(int i = 0; i h; if(w==0 && h == 0) break; for(int i ..
[C++] BOJ-1012 문제풀이 BOJ-1012 문제풀이 풀이 작성중.. 전체 소스코드 #include #include using namespace std; int map[51][51]; int dx[4] = {0,0,-1,1}; // 상하좌우 int dy[4] = {1,-1,0,0}; queue q; int T,N,M,K; int X,Y; int bfs(){ int cnt = 0; for(int i = 0; i> N >> K; for(int i = 0; i> X >> Y; map[Y][X] = 1; } cout
[C++] 카카오 프렌즈 컬러링북 Kakao2017 LEVEL 3 문제풀이 빈 공간이 아닌 부분을 찾아서 BFS를 돌리고 변수에 각각 영역의 수와 가장 큰 영역의 칸 수를 저장하면 된다. 전체 소스코드 #include #include #include using namespace std; int dx[4] = {-1,1,0,0}; // 상 하 좌 우 int dy[4] = {0,0,-1,1}; int cnt, max_ar, tmp_ar, ar, cnt_ar; void bfs(int n, int m, vector picture){ max_ar = tmp_ar = ar = cnt_ar = 0; queue q; vector visit(m,vector(n,false)); for(int i = 0; i