[프로그래머스] 카카오 프렌즈 컬러링북
안녕하세요
민돌입니다.
주말에는 포스팅을 쉬려고 했는데, 새벽에 풀어 둔 문제가 있어서 올립니다.
바로 문제 보시죠.
카카오 프렌트 컬러링북
상하좌우로 연결된 영역을 확인하면 되는 문제입니다.
재귀함수를 사용해서 상하좌우에 연결된 영역을 계속 탐색하면 되겠죠?
어렵지 않으니 바로 코드를 보겠습니다.
class Solution {
int[][] map; // 탐색 체크용 배열
int size = 0; // 영역 크기
int width; // 그림 가로 길이
int height; // 그림 세로 길이
void parse(int x, int y, int elem, int[][] picture) { // 영역 탐색
if (map[x][y] != 0) // 탐색한적 있으면 종료
return ;
size++;
map[x][y] = 1; // 탐색 체크표시
if (x+1 < width && picture[x+1][y] == elem) // 오른쪽 탐색
parse(x+1, y, elem, picture);
if (x-1 >= 0 && picture[x-1][y] == elem) // 왼쪽 탐색
parse(x-1, y, elem, picture);
if (y+1 < height && picture[x][y+1] == elem) // 위 탐색
parse(x, y+1, elem, picture);
if (y-1 >= 0 && picture[x][y-1] == elem) // 아래 탐색
parse(x, y-1, elem, picture);
}
public int[] solution(int m, int n, int[][] picture) {
int number = 0;
int maxsize= 0;
width = m;
height = n;
map = new int[width][height];
for (int x=0; x<width; x++) { // 탐색
for (int y=0; y<height; y++) {
if (picture[x][y] != 0 && map[x][y] == 0) {
size = 0;
number++;
parse(x, y, picture[x][y], picture);
if (size > maxsize) // 최대 크기 저장
maxsize = size;
}
}
}
int[] answer = {number, maxsize};
return answer; // 영역 개수와 최대 크가 반환
}
}
어제 별로 늦게잔거 같지도 않은데, 완전 늦게일어났습니다.
이제 주말이니 공부는 쉬엄쉬엄하고, 기타연습이나 해야겠어요. 이번에 가현회 후배와 듀오로 곡 연습하기로 했거든요.
포스팅은 여기서 마치겠습니다.
안녕~
Author And Source
이 문제에 관하여([프로그래머스] 카카오 프렌즈 컬러링북), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@minskim2/프로그래머스-카카오-프렌즈-컬러링북
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Author And Source
이 문제에 관하여([프로그래머스] 카카오 프렌즈 컬러링북), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@minskim2/프로그래머스-카카오-프렌즈-컬러링북저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)