시험봄.
퀴즈는 실수(?) 혹은 착각해서 한문제 날리고
몰라서 한문제 날리고 두문제 날렸음
코플릿에서 깊이우선탐색을 loop안에서 돌때 return 값이 제대로 반환되지 않게 구현한 것을 고치다가 시간이 많이 흘렀음
아래와 같이 처음부터 구현했는데, 이 경우 dfs의 한쪽 방향만을 탐색하는 문제가 발생했다.
vscode에서 디버거로 하나하나 찍어보기 전까지는 도저히 알지 못하겠어서 과제를 다 했음에도 이 문제 때문에 오랜시간 고민했다.
function test7(arr, id) {
for (let i = 0; i < arr.length; i++) {
if (arr[i].id === id) {
return arr[i]
} else if (arr[i].children !== undefined) {
return test7(arr[i].childern, id); // 이 부분이 문제
}
}
return null;
}
결국 else if 안에서 리턴값이 null 인 경우에는 리턴을 하지 않고 for loop의 나머지를 순회하는 방식으로 고쳐서 전부 다 통과하게 되었다.
충분히 생각하지 않고 무작정 코드를 작성하다 보면, 처음에 잘못 생각했던 로직이 고착화되어 그걸 깨부시고 다른 로직으로 피벗하는데 시간이 오래 걸린다. 코딩 테스트 할때 항상 경계해야 할 부분이라 생각한다.
function test7(arr, id) {
for (let i = 0; i < arr.length; i++) {
if (arr[i].id === id) {
return arr[i]
} else if (arr[i].children !== undefined) {
const result = test7(arr[i].childern, id);
if (!result) {
return result;
}
}
}
return null;
}
리액트 복습을 충분히 하는 계기가 되었음.
state, props 활용해서 component간 data flow를 복습하는 즐거운 시간이었다.
과제를 해치우니 이제 react로 프로젝트를 할 수 있겠다는 자신감이 스멀스멀 올라온다.