[プログラマー]Kaka friends彩本
1907 ワード
こんにちは。
MINDOLです
で週末休みに投稿しようと思っていたのですが、未明に問題が解決したのでアップしました.
直接問題を見よう
ココアピンク本
質問リンク
上下左右に接続されているエリアをチェックすればいいです.
再帰関数を使って上下左右に接続されているエリアを検索し続ければいいのでしょうか?
難しくないです.すぐコードを見ます.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; // 영역 개수와 최대 크가 반환
}
}
昨日はあまり遅く寝なかったので、遅く起きました.
今は週末ですから、よく勉強して、ギターをよく練習しなければなりません.今度は賢会の後輩と二人の曲を練習することにしました.
これで終了
皆さん、こんにちは
Reference
この問題について([プログラマー]Kaka friends彩本), 我々は、より多くの情報をここで見つけました
https://velog.io/@minskim2/프로그래머스-카카오-프렌즈-컬러링북
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
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; // 영역 개수와 최대 크가 반환
}
}
Reference
この問題について([プログラマー]Kaka friends彩本), 我々は、より多くの情報をここで見つけました https://velog.io/@minskim2/프로그래머스-카카오-프렌즈-컬러링북テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol