2021.05.18 - [개발 공부/코딩 테스트] - [LeetCode] - Find Eventual Safe States
코테스터디에서 위 문제를 풀기위해 퀴즈를 내주셨다
Go로 적어주셨다
func eventualSafeNodes(graph [][]int) []int {
result := []int{}
for i, _ := range graph{
compare := 0
stack := []int{}
check := i
for len(graph[check]) != 0 || len(stack) > 0 { //len( list ) -> list의 갯수.
compare += 1
stack = append(stack, graph[check]...) // graph[check]의 경우 리스트여서 리스트 + 리스트 해줄때는 ...을 써줍니다.
if compare > i {
break
}
check = stack[0]
stack = stack[1:] // 하나를 빼내고 지워줍니다.
}
if compare <= i {
result = append(result, i)
}
}
return result
}
어째서 [[],[0,2,3,4],[3],[4],[]] test case는 해결하지 못하는가?
디버깅
하나씩 과정을 되풀이해보자
자바식으로 재해석
본인 생각대로 자바 코드로 바꿔보았다.
class Solution {
public List<Integer> eventualSafeNodes(int[][] graph) {
ArrayList<Integer> result = new ArrayList<>();
for(int i = 0; i < graph.length; i++){
int compare = 0;
Stack<int[]> stack = new Stack<>();
int check = i;
if(graph[check].length != 0 || stack.size() >0) {
for(int temp : graph[check]) {
compare ++;
stack.add(graph[check]);
if(compare > i) {
break;
}
check = stack.get(0)[0];
stack.pop();
}
}
if(compare <= i) {
result.add(i);
}
}
return result.toArray(new Integer[0]);
}
}
Your input
[[1,2],[2,3],[5],[0],[5],[],[]]
Output
[2,3,4,5,6]
Expected
[2,4,5,6]
내일 에러 왜 나오는지 디버깅 무조건!
'Algorithm > LeetCode' 카테고리의 다른 글
[LeetCode] Running Sum of 1d Array (0) | 2021.06.08 |
---|---|
[LeetCode] Check if Word Equals Summation of Two Words (0) | 2021.06.07 |
[LeetCode] - Find Eventual Safe States (0) | 2021.05.18 |
[LeetCode] - Most Common Word (0) | 2021.05.12 |
[LeetCode] - LFU Cache (0) | 2021.05.11 |