Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 반효경교수님
- Recursion
- 이분탐색
- 완전탐색
- 백트래킹
- MySQL
- Mendix
- 자료구조
- SQL
- 재귀
- 프로그래머스
- 트리
- 매개변수 탐색
- algorithm
- 집합
- 정렬
- 그래프
- Bruteforce
- domain model
- 멘딕스
- lcap
- 해시맵
- microflow
- dfs
- 가중치없는그래프
- 스택
- 자바
- Sort
- 알고리즘
- git
Archives
- Today
- Total
mondegreen
[240418] 알고리즘 리부트 51일차 - 프로그래머스 무인도 여행 자바 본문
반응형
연결되어 있는 좌표의 수를 모두 더하는 문제였고 BFS를 구현했으며 연결되어 있는 여부를 Queue를 활용해서 해결했다. 그 외에는 경계를 벗어나거나 char 를 int로 변환해서 더해주는 것 정도 고려하면 될 것 같다.
import java.util.*;
class Solution {
public static char[][] map;
public static boolean[][] visited;
public int[] solution(String[] maps) {
int rLen = maps.length; // 행
int cLen = maps[0].length(); // 열
map = new char[rLen][cLen];
for(int i = 0; i<rLen; i++){
for(int j = 0;j<cLen; j++)
map[i][j] = maps[i].charAt(j);
}
List<Integer> answer = new ArrayList<>();
visited = new boolean[rLen][cLen];
int tmp = 0;
Queue<int[]> qu = new LinkedList<>();
int[][] drc = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
// 모든 지도 격자를 방문하면서
for(int i = 0; i < rLen; i++){
for(int j = 0; j < cLen; j++){
//System.out.println("===========================");
//System.out.println(i+", "+j+": "+tmp);
if(!visited[i][j] && map[i][j] != 'X'){
qu.offer(new int[]{i,j});
visited[i][j] = true;
tmp += map[i][j]-48;
//System.out.println(i+", "+j+": "+tmp);
}
while(!qu.isEmpty()){
int[] curr = qu.poll();
for(int d = 0; d<drc.length; d++){
int nr = curr[0]+drc[d][0];
int nc = curr[1]+drc[d][1];
if(nr<0||nc<0||nr>=rLen||nc>=cLen||visited[nr][nc]||map[nr][nc]=='X') continue;
qu.offer(new int[] {nr, nc});
visited[nr][nc] = true;
tmp+=map[nr][nc]-48;
//System.out.println(nr+", "+nc+": "+tmp);
}
}
if(tmp!=0) answer.add(tmp);
tmp = 0;
}
}
if(answer.size()==0) answer.add(-1);
Collections.sort(answer);
return answer.stream().mapToInt(Integer::intValue).toArray();
}
}
반응형
'알고리즘 풀이 및 리뷰 > 프로그래머스' 카테고리의 다른 글
[240423] 알고리즘 리부트 54일차 - 프로그래머스 야근 지수 자바 (0) | 2024.04.23 |
---|---|
[240419] 알고리즘 리부트 52일차 - 프로그래머스 롤 케이크 자르기 자바 (0) | 2024.04.19 |
[240418] 알고리즘 리부트 51일차 - 프로그래머스 택배상자 자바 (0) | 2024.04.18 |
[240417] 알고리즘 리부트 50일차 - 프로그래머스 모음사전 자바 (1) | 2024.04.18 |
[240415] 알고리즘 리부트 49일차 - 프로그래머스 124 나라의 숫자 자바 (0) | 2024.04.17 |