728x90
💡 구글에 Javascript 풀이가 많이 없거나, 배운 점이 있으면 포스팅합니다.
내 풀이
/**
* @param {number[][]} rooms
* @return {boolean}
*/
var canVisitAllRooms = function(rooms) {
const visitedSet = new Set([0])
const keys = [0]
let keyIndex = 0
while (keyIndex < keys.length) {
let visiting = keys[keyIndex]
rooms[visiting].forEach((key) => {
if (!keys.includes(key)) {
keys.push(key)
}
})
visitedSet.add(visiting)
keyIndex++
}
return visitedSet.size === rooms.length
};
- visitedSet : 방문여부를 체크하는 visitedSet은 중복방지를 위해 SET을 활용했다. 그리고 해당 SET의 Size가 rooms.length와 같은지 true/false를 return 하기로 했다.
- keys : 얻은 keys도 중복체크를 해야하지만, 일정한 순서를 가지고 다음 방으로 가야하기 때문에 배열로 만들고, if (!keys.includes(key))라는 분기문을 통해 keys에 추가할지 말지를 분기해주었다.
- while문을 통해 더이상 키가 없을 경우에 return 문으로 내려가도록 했다.
다른 사람 풀이 참고한 풀이
/**
* @param {number[][]} rooms
* @return {boolean}
*/
var canVisitAllRooms = function(rooms) {
const visited = new Set()
function DFS (v) {
visited.add(v)
for (let key of rooms[v]) {
if (!visited.has(key)) {
DFS(key)
}
}
}
DFS(0)
return visited.size === rooms.length
};
- 다른사람들은 대부분 DFS 또는 BFS로 풀었길래 나도 한번 도전해보았다.
- 아직 DFS,BFS가 익숙하지 않아 꽤 오랜시간이 걸렸는데, 그래도 이 문제를 통해 어느 정도 방문 여부 체크에 대한 개념이 생긴것 같아서 다행이다. 꽤 많은 문제를 풀어봐야 익숙해질것 같다.
배운 점, 느낀 점
- 오늘로써 LeetCode에서 47문제를 풀었다. 그것마저도 아직 대다수가 Easy 난이도지만, 난이도 보단 꾸준함이 더 중요하다고 생각하기에 개의치 않을 생각이다.
- 아무튼, 앞으로 최대한 매일 1문제씩 LeetCode에서 문제를 풀 생각이다. 프로그래머스가 공부에 도움이 되지만, 영어 공부도 할 겸, 문제풀이를 통해 순수한 자료구조만 공부하는 겸 LeetCode위주로 풀 생각이다.
- 2023년 1년간 1문제씩만 풀어도 대략 400문제 까지 풀 수 있으니 꾸준히 해보련다. 화이팅!
'Coding Test > LeetCode' 카테고리의 다른 글
[Javascript] (LeetCode) 17. Letter Combinations of a Phone Number (Medium) (0) | 2023.01.01 |
---|---|
[Javascript] (LeetCode) 49. Group Anagrams(Medium) (0) | 2022.09.17 |
[Javascript] (LeetCode) 21. Merge Two Sorted Lists (Easy) (0) | 2022.08.09 |
[Javascript] (LeetCode) 13. Roman to Integer (Easy) (0) | 2022.08.08 |
[Javascript] (LeetCode) 206. Reverse Linked List (Easy) (0) | 2022.08.08 |
[Javascript] (LeetCode) 66. Plus One (Easy) (0) | 2022.08.04 |
[Javascript] (LeetCode) 28. Implement strStr() (Easy) (0) | 2022.08.03 |
[Javascript] (LeetCode) 8. String to Integer (atoi) (Medium) (0) | 2022.08.02 |
댓글