3108번: 로고
(5, 5) ~ (8, 8)인 직사각형과 (6, 6) ~ (7, 7)인 직사각형이 있을 때 붙어있는지 구분하기가 힘들다. 그래서 각 좌표값에 *2를 해서 문제를 풀기 수월하도록 만들었다. 답을 구하기 위해서 DFS를 이용해 겹쳐진 직사각형이 몇개인지 구하고, 기준 좌표에 직사각형이 존재한다면 -1을 해서 답을 도출해냈다. #include typedef struct { int y, x; } dif; dif dir[4] = { {1, 0}, {-1, 0}, {0, 1}, {0, -1} }; int map[2001][2001] = { 0 }; int check[2001][2001] = { 0 }; void swap(int *a, int *b) { int temp = *a; *a = *b; *b = *a; } ..
2667번: 단지번호붙이기
DFS로 탐색하면서 단지에 각 집마다 checkNum을 +1한다. 한단지가 종료되면 checkNum을 +1한다. 전체 탐색이 완료된 후 정렬을 통해 오름차순으로 세우고 답을 출력한다. #include #include #include typedef struct { int y, x; } dif; dif dir[4] = { {1, 0}, {-1, 0}, {0, 1}, {0, -1} }; int count[1000] = { 0 }; int check[30][30] = { 0 }; int size; std::string map[30]; void DFS(int checkNum, int y, int x) { if (check[y][x]) { return; } count[checkNum]++; check[y][x] =..