part6. 구름의 개수 풀이 시간초과 이유
90
작성한 질문수 11
part6 구름의개수1 문제 풀다 질문 드립니다.
아래는 제가 bfs로 푼 코드인데요. 케이스는 통과하는데 시간초과가 납니다.
bfs() 매개변수로 int[] start 를 받아서 아래에서 사용했는데, 하위 for문에서 int[] sub 로 배열을 만들어 쓴게 문제인가 싶은데, 이런 일차원 배열 더 쓴다고 시간복잡도가 높아지나? 싶은 생각이 들어 시간 초과 왜나는지 궁금합니다.
public static int solution(int[][] sky) {
boolean[][] visited = new boolean[sky.length][sky[0].length];
int count = 0;
for(int i=0; i<sky.length; i++) {
for(int j=0; j<sky[0].length; j++) {
if(!visited[i][j] && (sky[i][j] == 1)) {
bfs(sky, new int[]{i,j}, visited);
count++;
}
}
}
return count;
}
public static void bfs(int[][] sky, int[] start, boolean[][] visited) {
Queue<int[]> q = new ArrayDeque<>();
q.offer(start);
visited[start[0]][start[1]] = true;
while(!q.isEmpty()) {
int[] cur = q.poll();
System.out.println("start: " + start[0] + start[1] + "/ poll: " + cur[0] + ", " + cur[1]);
// cur의 상하좌우 중 갈 수 있는 길 & visited 안한 길을 q에 넣기
int[] r = {-1, 1, 0, 0};
int[] c = {0, 0, -1, 1};
int w = sky[0].length;
int h = sky.length;
for(int i=0; i<r.length; i++) {
int[] sub = new int[]{cur[0]+r[i], cur[1]+c[i]};
System.out.println("sub:" + sub[0] + ","+sub[1]);
if((sub[0] >= 0 && sub[0] < h && sub[1] >= 0 && sub[1] < w) && (sky[sub[0]][sub[1]] != 0) && (!visited[sub[0]][sub[1]])) {
q.offer(sub);
visited[sub[0]][sub[1]] = true;
System.out.println("sub offer:" + sub[0] + ","+sub[1]);
}
}
}
}
답변 2
노션 링크 문의
0
46
2
문제 풀이 접속 오류
0
46
2
노션 접근권
0
38
1
코딩 테스트 All-in-One(Java)' 강의 노션 교재 권한문의
0
42
1
태어난김에 세계일주 시간 초과
0
33
1
커리큘럼 중 정렬 관련 질문
0
28
1
코테 사이트 로그인 불가
0
38
1
[할인쿠폰] 코테의 바이블[JAVA] 50% 할인 쿠폰 관련
0
30
1
part8 Notion 링크
0
33
1
잠겨버린 사물함 시간초과 관련 질문입니다.
0
32
1
Climbing Stairs 문제 basecase 생각하는 방법
0
34
1
DFS/BFS
1
55
2
노션 링크 질문드립니다!
0
92
3
[문제풀이] network delay time
0
75
2
위상정렬 구현 관련
0
97
3
코딩테스트를 위한 JAVA 질문 있습니다!
0
103
1
점진적과부하 문제 - 시간 초과 오류
0
88
2
예제 2번 오류
0
88
2
part5 홍팀청팀 테스트케이스 오류
1
90
1
코테 사이트 네트워크 연결....
1
107
2
DP-다익스트라
0
86
2
코테 사이트 네트워크 연결 문제 확인 부탁드립니다.
2
108
2
코테 사이트에 접속이 안됩니다.
0
112
2
노션 링크가 어디있나요?
0
123
2





