[LeetCode] - M - 133. Clone Graph

2023. 9. 15. 07:49· 알고리즘/문제
목차
  1. 🔥 - Java 코드

https://leetcode.com/problems/clone-graph/description/?envType=study-plan-v2&envId=top-interview-150

 

LeetCode - The World's Leading Online Programming Learning Platform

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

🌿 - 설명

주어진 그래프를 깊은 복사하는 것을 구현하면 된다.

 

 

📌- 풀이

간단하게 생각하면 결국 전체를 탐색해서 복사를 해야 한다고 생각해서 BFS 방식으로 풀면 되겠다고 생각을 했음.

 

  1. root 노드로부터 시작
  2. 반환하게 될 결과값을 담는 map과, 해당 노드들을 BFS하기 위한 인접리스트를 담을 que 초기화
  3. que가 빌 때까지 반복
  4. 인접리스트들을 계속해서 map에 집어넣으면서 반복

백준과 프로그래머스 같은 곳에서 BFS를 풀이하는 것과 LeetCode에서 Node를 사용해서 BFS를 하는 것이 방식은 같지만 뭔가 더 생각해야 될 것들이 많아서 복잡한 것 같음.

 

 

🔥 - Java 코드


  
/*
// Definition for a Node.
class Node {
public int val;
public List<Node> neighbors;
public Node() {
val = 0;
neighbors = new ArrayList<Node>();
}
public Node(int _val) {
val = _val;
neighbors = new ArrayList<Node>();
}
public Node(int _val, ArrayList<Node> _neighbors) {
val = _val;
neighbors = _neighbors;
}
}
*/
class Solution {
public Node cloneGraph(Node node) {
if(node == null)
return null;
Map<Integer, Node> map = new HashMap<>();
Queue<Node> que = new LinkedList<>();
map.put(node.val, new Node(node.val));
que.add(node);
while(!que.isEmpty()) {
Node cur = que.poll();
Node temp = map.get(cur.val);
for(Node neighborsNode: cur.neighbors) {
if(!map.containsKey(neighborsNode.val)) {
map.put(neighborsNode.val, new Node(neighborsNode.val));
que.add(neighborsNode);
}
temp.neighbors.add(map.get(neighborsNode.val));
}
}
return map.get(node.val);
}
}
  1. 🔥 - Java 코드
'알고리즘/문제' 카테고리의 다른 글
  • [그리디] - Lv2 - 광물 캐기
  • [우선순위큐/스택] - Lv2 - 과제 진행하기
  • [LeetCode] - M - 211. Design Add and Search Words Data Structure
  • [LeetCode] - M - 199. Binary Tree Right Side View
Casteira
Casteira
할 뿐
Casteira
SpongeCake
Casteira
전체
오늘
어제
  • __Main__ (104)
    • 알고리즘 (65)
      • 개념 (6)
      • 문제 (58)
    • 컴퓨터 구조 (9)
      • 자료 구조 (2)
      • OS (7)
    • 웹 (1)
      • 자바 (1)
      • 스프링 (5)
      • SQL (0)
    • 기록 (4)
      • 포트폴리오 (2)
    • 정글 (18)
      • TIL (17)

블로그 메뉴

  • 🗒️ 깃허브
  • 태그
  • 방명록
  • 관리

공지사항

인기 글

태그

  • 백준
  • framework
  • spring
  • 크래프톤 정글
  • dp
  • annotation
  • springboot
  • java
  • 백준 골드
  • 코딩테스트
  • 크래프톤
  • 정글

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.1
Casteira
[LeetCode] - M - 133. Clone Graph
테마상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.