*문제
*코드
class Solution {
public int findCenter(int[][] edges) {
// 첫 두 간선만 확인하면 중심 노드를 찾을 수 있습니다
int[] firstEdge = edges[0];
int[] secondEdge = edges[1];
// 두 간선에 공통으로 나타나는 노드가 중심 노드입니다
if (firstEdge[0] == secondEdge[0] || firstEdge[0] == secondEdge[1]) {
return firstEdge[0];
} else {
return firstEdge[1];
}
}
}
*리뷰
메소드 선언:
public 접근 제어자를 사용하여 외부에서 호출 가능합니다.
입력으로 2차원 정수 배열 edges를 받고, 정수를 반환합니다.
간선 추출:
firstEdge와 secondEdge 변수를 사용하여 첫 두 간선을 저장합니다.
이는 코드의 가독성을 높이고 배열 인덱싱을 줄입니다.
중심 노드 찾기:
if-else 구문을 사용하여 중심 노드를 결정합니다.
첫 번째 간선의 첫 노드(firstEdge[0])가 두 번째 간선의 어느 노드와 일치하는지 확인합니다.
일치하면 그 노드가 중심 노드이므로 firstEdge[0]을 반환합니다.
일치하지 않으면 firstEdge[1]이 중심 노드이므로 이를 반환합니다.
최적화:
단 두 개의 간선만 확인하여 O(1) 시간 복잡도를 달성합니다.
추가 메모리를 사용하지 않아 O(1) 공간 복잡도를 유지합니다.
가정:
입력이 항상 유효한 별 그래프를 나타낸다고 가정합니다.
따라서 별도의 입력 유효성 검사를 수행하지 않습니다.
개선 가능성:
입력 배열의 길이 확인 등 기본적인 유효성 검사를 추가할 수 있습니다.
하지만 이는 시간 복잡도를 높일 수 있으므로 트레이드오프를 고려해야 합니다.