part6. 구름의 개수 풀이 시간초과 이유
83
작성한 질문수 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
part8 Notion 링크
0
18
1
잠겨버린 사물함 시간초과 관련 질문입니다.
0
25
1
Climbing Stairs 문제 basecase 생각하는 방법
0
30
1
DFS/BFS
1
36
2
노션 링크 질문드립니다!
0
71
3
[문제풀이] network delay time
0
66
2
위상정렬 구현 관련
0
78
3
코딩테스트를 위한 JAVA 질문 있습니다!
0
89
1
점진적과부하 문제 - 시간 초과 오류
0
81
2
예제 2번 오류
0
80
2
part5 홍팀청팀 테스트케이스 오류
1
83
1
코테 사이트 네트워크 연결....
1
90
2
DP-다익스트라
0
76
2
코테 사이트 네트워크 연결 문제 확인 부탁드립니다.
2
89
2
코테 사이트에 접속이 안됩니다.
0
95
2
노션 링크가 어디있나요?
0
110
2
정답과 동일하게 작성 후 실행 또는 제출했음에도 시간초과
0
99
4
DFS vs BFS 중 BFS 추천해주신 것 관련 질문
1
76
2
part5. 청팀홍팀 풀이 질문 드립니다.
0
91
3
추후 학습 계획 질문
0
83
1
자바 정렬
0
49
2
코테의 바이블(java) 와 해당 강의 차이
0
114
2
커리큘럼 관련 질문
0
76
1
queue에 값을 추가하는 메서드는 어떤 차이가 있나요?
0
86
1





