hyeon.s
개발로그
hyeon.s
전체 방문자
오늘
어제
  • 분류 전체보기 (151)
    • Web 및 인프라 (1)
      • Web (1)
      • Terraform (2)
      • Docker (1)
    • Android (1)
      • 공부 (28)
      • 트러블슈팅 (12)
      • 프로젝트 개발 (10)
      • Compose (2)
      • 우테코 프리코스 (0)
    • Server (6)
      • 공부 (1)
      • Spring (5)
    • 알고리즘 (68)
      • 문제풀이 (C++,Kotlin) (54)
      • 공부 (13)
    • 디자인 (3)
      • UI (3)
    • Language (5)
      • Kotlin (5)
      • JAVA (0)
    • IT 동아리 (8)
      • UMC 3기 (Android) (7)
      • Sopt 32기 (Android) (1)

Github

글쓰기 / 관리자
hELLO · Designed By 정상우.
hyeon.s

개발로그

[바킹독 알고리즘] 0x18강 : 그래프
알고리즘/공부

[바킹독 알고리즘] 0x18강 : 그래프

2023. 9. 10. 18:11
728x90

그래프 정의

정점과 간선으로 이루어진 자료구조
간과하기 쉬운 그래프 : 루프가 존재하는 그래프, 연결 그래프가 아닌 경우 (도 생각해야한다.)

그래프 표현법

1. 인접 행렬

vertex * vertex의 2차원 배열을 만들어서 각 vertex의 간선이 존재하면 양방향일 경우 두 vertex에 각 칸을 전부 1로 세팅, 단방향일 경우 해당 칸에만 1로 set해서 그래프를 표현할 수 있다.

2. 인접 리스트

인접 리스트를 표현할 때 Kotlin에서는 LinkedList를 실제로 사용하면 되지만, C++의 경우 Vector를 사용해도 무관하다. ( 그렇다면 Kotlin에서도 Pair<Int,MutableList> 로 사용하면 되지 않을까? 싶다..)

그래프에서 BFS와 DFS

1. BFS using Queue

만약 위 예시처럼 연결그래프가 아닐 경우에는 BFS 그림 문제처럼, 모든 정점을 돌면서 아직 visit 하지 않은 정점을 시작으로 BFS를 돌려서 문제를 풀 수 있다.

2. DFS using Stack / Recursion

재귀의 경우 상대적으로 Stack보다 느리게 작동한다. 코딩테스트에서 만약 스택 메모리 제한이 존재한다면 Stack으로 푸는게 맞다. sw academy 는 1MB로 스택메모리 제한이 있다고 한다. 

모든 출처: https://blog.encrypted.gg/1016

 

728x90
저작자표시 (새창열림)

'알고리즘 > 공부' 카테고리의 다른 글

[바킹독 알고리즘] 0x14강 - 투 포인터  (0) 2024.07.04
[바킹독 알고리즘] 0x10강:다이나믹 프로그래밍  (0) 2023.01.22
[바킹독 알고리즘] 0x0A강:DFS in 다차원 배열  (0) 2023.01.22
[알고리즘] 이진탐색 알고리즘 (Binary Search)  (0) 2023.01.18
[바킹독 알고리즘] 0x09강:BFS in 다차원 배열  (0) 2023.01.12
'알고리즘/공부' 카테고리의 다른 글
  • [바킹독 알고리즘] 0x14강 - 투 포인터
  • [바킹독 알고리즘] 0x10강:다이나믹 프로그래밍
  • [바킹독 알고리즘] 0x0A강:DFS in 다차원 배열
  • [알고리즘] 이진탐색 알고리즘 (Binary Search)
hyeon.s
hyeon.s
이유있는 코드를 짜자

티스토리툴바