리나 Dev토리

WIL 항해W3 자료구조/알고리즘 2주차 본문

자료구조&알고리즘

WIL 항해W3 자료구조/알고리즘 2주차

리나lina 2022. 3. 27. 23:39

항해 자료구조/알고리즘 2번째주에는

그래프, DFS, BFS, 백트래킹, 이진트리를 배웠다.

 

DFS에서 섬의 갯수(리트코드 200번) 라는 문제를 스스로 풀지 못해 책에 있는 풀이법을 보고,

2차 배열을 그려놓고 재귀의 흐름을 화살표로 계속 그려보았는데, 

무슨 미로처럼 상하좌우 왔다갔다 너무 정신이 없었다.

이런 흐름을 내가 생각해내야 한다고? 라는 게 믿기지 않았다.

 

문제를 풀다가 모르는 단어가 있으면 아래와 같이 찾아보았다.


직렬화 프로세스

출처: https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/concepts/serialization/

직렬화(serialization)
데이터 구조나 오브젝트 상태를 동일하거나 다른 컴퓨터 환경에 저장(ex.파일이나 메모리 버퍼에서, 또는 네트워크 연결 링크 간 전송)하고 나중에 재구성할 수 있는 포맷으로 변환하는 과정

데이터 직렬화
메모리를 디스크에 저장하거나 네트워크 통신에 사용하기 위한 형식으로 변환하는 것

역직렬화(desrialization)
일련의 바이트로부터 데이터 구조를 추출하는 일 디스크에 저장한 데이터를 읽거나, 네트워크 통신으로 받은 데이터를 메모리에 쓸 수 있도록 다시 변환하는 것

힙(heap)
최댓값 및 최솟값을 찾아내는 연산을 빠르게 하기 위해 고안된 완전이진트리(complete binary tree)를 기본으로 한 자료구조(tree-based structure)로서 다음과 같은 힙 속성을 만족한다.
 - A가 B의 부모노드(parent node) 이면, A의 키(key)값과 B의 키값 사이에는 대소관계가 성립한다.
 - 힙에는 두가지 종류가 있으며, 부모노드의 키값이 자식노드의 키값보다 항상 큰 힙을 '최대 힙', 부모노드의 키값이 자식노드의 키값보다 항상 작은 힙을 '최소 힙'이라고 부른다.

 

마지막 날 백준 1068번 트리문제에서 

문제를 풀기위한 일부분를 구현하는 과정에서 오랜 시간이 걸려 처음 재귀를 구현하는 것을 성공하였다. ㅠㅠ

물론 재귀 템플릿? 틀을 활용하여 만들었지만, 내가 직접 어떤 부분을 반복해야하고 어떤 경우에 break를 걸어야하는지 처음으로 구현한 재귀라서 너무 기뻤다. 

백준에서 코드를 제출했으나 '틀렸습니다'가 나와서 다시 봐야 하지만, 조금의 성장을 한 것 같아서 좋았다.

 

알고리즘 주차 반절이 지나갔다. 

남은 2주만 하고 알고리즘을 안할것이 아니기 때문에, 남들하고 비교하지 말고 내 속도로 열심히 하자!

 

 

 

출처 : https://hub1234.tistory.com/26

 

데이터 직렬화(serialization)는 무엇이고 왜 필요한가?

우선 이 글은 구글링에서 나오는 여러 가지 직렬화에 대한 글들과 설명들을 읽고 제 나름대로 한번 더 이해하기 편하도록 정리한 글입니다. 데이터 직렬화(serialization), 역직렬화(deserialization)는

hub1234.tistory.com

https://ko.wikipedia.org/wiki/%ED%9E%99_(%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%A1%B0)

 

 

Comments