반응형
문제
그림을 보면 숫자 2가 다른 숫자들과 연결돼있다. 문제의 답은 숫자 2처럼 커넥션이 되는 숫자를 찾는 문제다.
현재 풀이
/**
* @param {number[][]} edges
* @return {number}
*/
var findCenter = function(edges) {
let obj = {}
for(let item of edges){
버전 2
for(let num of item){
obj[num] ? obj[num] += 1 : obj[num] = 1;
if(obj[num] > 1){
return num
}
}
}
버전 1
// item.map(num=> {
// obj[num] ? obj[num] += 1 : obj[num] = 1;
// })
// for(let num in obj){
// if(obj[num] > 1){
// return num
// }
// }
};
처음에 map함수만 이용해서 해보려고 했는데 객체 key값이 계속 undefined가 떠서 결국 for문을 더 돌려서 처음 풀이에 성공했다.
그래도 아쉬워서, 그냥 for문을 써서 다르게 풀이했는데, 이때는 또 return 하니 key 값이 나와서 풀이에 성공했다. 풀이에 성공은 했지만, 뭔가 찝찝하다 ㅋㅋㅋㅋ
예전 풀이
/**
* @param {number[][]} edges
* @return {number}
*/
var findCenter = function(edges) {
let res = 0;
let cnt = 0;
let cnt2 = 0;
let nodeCheck = edges[0][0]
let nodeCheck2 = edges[0][1]
edges.map(data => {
data.includes(nodeCheck) ? cnt++: null;
data.includes(nodeCheck2) ? cnt2++:null;
})
if(cnt > 1){
return nodeCheck
}else{
return nodeCheck2
}
};
이번에 풀 때 내가 너무 복잡하게 생각했구나....라는 생각이 들면서 망치로 한대 맞은 기분이다. 단순하게 생각해도 좋았을 텐데 ㅠㅠㅠ
아쉽지만 다음에 이렇게 풀이해보면 되지 않을까??
다른 사람 풀이
const findCenter = (edges) => {
const [[a, b], [c, d]] = edges;
return a === c || b === c ? c : d;
};
const findCenter = (edges) => edges[1][0] === edges[0][0] || edges[1][0] === edges[0][1] ? edges[1][0] : edges[1][1];
와............... 진짜 뒤통수 엄청 쌔게 맞았다. 대박 풀이다.........알고리즘의 재미를 느낀 순간이다. ㅋㅋㅋ오늘 문제를 풀어보면서 다시 풀어보길 잘했다는 생각이 든다. 아침부터 충격 그 자체
이 문제 시간이 지난 뒤에 다시 한번 풀어 봐야겠다.
결과
반응형
'LeetCode' 카테고리의 다른 글
1688. Count of Matches in Tournament (0) | 2022.06.21 |
---|---|
1588. Sum of All Odd Length Subarrays (0) | 2022.06.15 |
1773. Count Items Matching a Rule (0) | 2022.06.13 |
1859. Sorting the Sentence (0) | 2022.06.12 |
1221. Split a String in Balanced Strings (0) | 2022.06.10 |
댓글