U E D R , A S I H C RSS

새싹교실/2021/시작이반/2회차 (rev. 1.9)

새싹교실/2021/시작이반/2회차


1. 수업

1.1. 진행

1. 장소 : 구글 밋으로 진행
2. 시간 : 3/27 10:00 ~ 12:00(강사 개인 사정으로 인한 시간 변경)

2. 숙제

1. 수업 내용 정리하기
2. 후기 작성하기
3. 수업 PPT 문제들 풀어보기

3. 수업 내용 정리

3.1. 김도엽

여기에 정리해주세요.

3.2. 한윤호

그래프 - 정점(vertex)과 간선(edge)으로 구성된 자료구조, 방향 / 무방향 그래프
         (사이클: 첫 정점과 마지막 정점이 동일한 경로가 존재할 경우)

인접행렬 - 직관적 / 공간낭비
인접리스트 - vector로 구현가능, 공간복잡도 / 직관적이지 못함

트리 - 사이클이 존재하지 않는 그래프, 부모저장법 / 자식저장법

DFS - 깊이 우선 탐색 (스택) 
      인접한 노드를 방문하고 더 방문할 노드가 없으면 이전에 방문한 노드에 인접하면서 방문하지 않은 노드가 있는지 탐색
BFS - 크기 우선 탐색 (큐)
      한 노드에서 시작해서 인접한 노드부터 모두 탐색

이진 탐색 트리 - 왼쪽: 부모노드보다 작은 값 / 오른쪽: 부모노드보다 큰 값 (트리 순회: 전위, 중위, 후위)

set - 중복을 허용하지 않는 자료구조
map - key와 value 저장
ㄴ트리 형태이며 정렬된 상태로 유지됨


우선순위 큐 - 원소를 pop 할 때 우선순위가 높은 것부터 pop (prioirty_queue : 원소 값이 큰 것부터 pop)
              최소힙은 저장할 때 -곱하고 pop할 때 -곱하는 것을 응용

min, max - 두 값 중 최대최소 (C++11부터 배열을 넣어서 최대최소 구하기도 가능)
min_element, max_element - 배열에서 최대최소, return값이 이터레이터

string - 문자열에 +로 잇기와 push_back으로 맨뒤에 문자 추가 가능
         getline으로 공백까지 입력받고 문자마다 비교 -> 공백 개수+1=단어 개수
         다른 자료형->stirng: to_string / string->다른 자료형 stoi, stoll, stod 등

유클리드 호제법 - A,B의 최대공약수는 B,A%B의 최대공약수와 같다.     +)C++ 17부터는 std::gcd 활용가능

에라토스테네스의 체 - 배수를 전부 걸러내면서 소수를 찾는 방법 (i*i<=n까지 비교)

3.3. 한예준

그래프 - 정점(vertex)와 간선(edge)로 이루어져 있는 자료구조.

인접행렬 - 노드 간의 연결 상태를 나타낸 행렬, adj[i][j]에 대해 노드 i에서 노드 j로 가는 간선이 있으면 1, 없으면 0.

인접 리스트 - adj[i]에 대해 노드 i에 연결된 노드들을 원소로 갖는 vector, 공간복잡도 측면에서 인접행렬보다 좋지만, 직관적이지 못하다.

트리 - 나무를 뒤집은 모양을 하는 자료구조. 부모노드, 자식노드, 형제노드로 표현한다. 특히 이진트리는 모든 부모 노드가 자식 노드를 2개 이하로 가지고 있는 트리를 말한다.
부모노드는 하나지만 자식노드는 여러 개를 가질 수 있어서 보통 부모저장을 사용한다.

탐색 - 크게 깊이 우선 탐색(DFS)와 너비 우선 탐색(BFS)로 이루어진다.

이진 탐색 트리 - 왼쪽 서브트리 노드값이 항상 부모노드 값보다 작고, 오른쪽 서브트리 노드값은 부모노드 값보다 크다.

따로 정렬을 쓰지 않고 set이나 map을 써도 된다.

우선순위 큐 - 우선순위가 높은 것부터 pop하는 자료구조. 원소값이 큰 것이 힙이 높은걸로 한다.

-----------------------------------------------

min/max - 두 개의 값 중 최솟값 또는 최댓값을 알려준다.

min_element/max_element - 어떤 배열에서의 최댓값 또는 최소값을 따질 때 사용한다.

문자열 분석 문제 - getline으로 문자열 전체를 받아와서 띄어쓰기(공백)의 개수를 세도 된다.

최대공약수와 최소공배수 문제 - 유클리드 호제법 사용해서 풀기; std::gcd 써도 된다.

소수 찾기 문제 - 소수로 판정해야 하는 양이 많을 경우 에라토스테네스의 체를 사용하면 좋다.

4. 후기

  • 후기 작성 요령 : 후기는 F4(ThreeFs + Future Action Plan)에 맞게 작성해주세요.
  • Facts, Feelings, Findings, Future Action Plan. 즉, 사실, 느낀 점, 깨달은 점, 앞으로의 계획.

박인서:
김도엽:
한윤호: 그래프, 트리, 우선순위 큐 등의 자료구조와 탐색, 그리고 c++에서 문자열을 다루는 방법과 함께 수학문제 풀이방법을 배웠다. 에라토스테네스의 체를 for문으로 구현한 코드가 기억에 남는다. 코드를 보면 이해할 수 있지만 문제만 보고 혼자 c++로 코드를 짤 수 있을까 생각할만큼 c++코드가 아직 낯설지만 코드를 많이 접하고 문제를 풀면서 익숙해져야겠다는 생각을 했다.
한예준: 그래프, 인접행렬, 인접 리스트, 트리, 탐색 방법 중 DFS와 BFS, 이진 탐색 트리, 우선순위 큐에 대해 배웠고, 이를 이용한 예제들과 몇 가지 수학문제도 알아보았다. 특히 수학문제에서 유클리드 호제법을 사용한다든지 에라토스테네스의 체를 사용하는 방법도 있다는 것을 알게 되었다. 아직 수월하게 사용하기에는 조금 어렵게 느껴졌지만 여러 예제를 풀면서 익혀야겠다고 생각했다.



Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-04-03 04:25:17
Processing time 0.0239 sec