ACM-ICPC  세미나 2007. 07. 10( 화 ) 14:00 발표자 컴퓨터과학과  05 학번 김승덕 연세대학교 정보특기자  YUTAR 2007 년  6 월  21 일 목요일
Big Integer 필요성 <ul><li>일반 변수의 표현 범위는 제한적 </li></ul><ul><li>천문학적인 수를 정확하게 표현하기 위해서는 가변적인 표현 범위를 가지는 자료구조가 필요 </li></ul>연세대...
Big Integer 구현 방법 <ul><li>가장 쉽고 직관적인 방법 </li></ul><ul><ul><li>문자열로 표현 </li></ul></ul><ul><ul><li>사람이 계산하는 것과 똑같이 계산 </li><...
Big Integer 더하기 algorithm  bigint_plus input  array arr, integer num output  array arr i ← 0 while  num is not zero  do k ...
Big Integer 빼기 algorithm  bigint_plus input  array arr, integer num output  array arr i ← 0 while  num is not zero  do arr...
연습 문제 UVA10106 <ul><li>http://acm.uva.es/p/v101/10106.html </li></ul><ul><li>두 수를 곱하는데 각각의 범위가  10 250 까지 이므로  Big Integer...
그래프 정의 <ul><li>정점의 집합과 각 정점을 이어주는 간선의 집합으로 이루어짐 </li></ul><ul><li>G = { V, E } </li></ul><ul><ul><li>V = Vertex set  정점 집합...
그래프 구현 방법 <ul><li>인접 리스트 </li></ul><ul><ul><li>간선 정보를 배열로 가짐 </li></ul></ul><ul><li>인접 행렬 </li></ul><ul><ul><li>a ij 는  i ...
그래프 최단 경로 알고리즘 <ul><li>Dijkstra </li></ul><ul><ul><li>두 정점간의 최단 경로를 구하는 알고리즘 </li></ul></ul><ul><ul><li>O(n 2 ) </li></ul>...
그래프 Dijkstra( 다잌스트라 )  알고리즘 <ul><li>시작 정점을 부분 그래프에 포함시킴 </li></ul><ul><li>부분 그래프에서 이동할 수 있는 정점 중 가장 가까운 정점을 선택 </li></ul><...
그래프 Dijkstra( 다잌스트라 )  알고리즘 연세대학교 정보특기자  YUTAR 2007 년  6 월  21 일 목요일
그래프 Floyd  알고리즘 <ul><li>a ij  = if  정점  i 에서 정점  j 가 연결되어 있으면   then  간선의 길이   else ∞ </li></ul><ul><li>a ij  = min( a ij ...
트리 정의 <ul><li>사이클 ( 순환 ) 이 없는 그래프 </li></ul><ul><li>노드 :  각 정점 </li></ul><ul><li>루트 :  최상위 노드 </li></ul><ul><li>리프 :  최하위 ...
트리 정의 <ul><li>사이클 ( 순환 ) 이 없는 그래프 </li></ul><ul><li>노드 :  각 정점 </li></ul><ul><li>루트 :  최상위 노드 </li></ul><ul><li>리프 :  최하위 ...
트리 최소 신장 트리 <ul><li>어떤 그래프에서 정점의 개수  V 에 대하여  V-1 개의 간선을 선택해 만든 트리를 신장 트리라고 함 </li></ul><ul><li>가능한 신장 트리 중에서 간선 가중치의 합이 최...
트리 이진 트리 <ul><li>어떤 노드도 두 개 이하의 자식을 갖는 트리 </li></ul><ul><li>배열을 이용하여 쉽게 구현 가능 </li></ul><ul><ul><li>n 이 현재 노드일 때  n/2 는 부모...
트리 이진 트리 <ul><li>이분 검색 트리 </li></ul><ul><ul><li>트리를 생성할 때 왼쪽 자식이 오른쪽 자식보다 항상 크거나 작도록 함 </li></ul></ul><ul><ul><li>빠른 검색이 가...
Upcoming SlideShare
Loading in …5
×

2007 Icpc3

828 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
828
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

2007 Icpc3

  1. 1. ACM-ICPC 세미나 2007. 07. 10( 화 ) 14:00 발표자 컴퓨터과학과 05 학번 김승덕 연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  2. 2. Big Integer 필요성 <ul><li>일반 변수의 표현 범위는 제한적 </li></ul><ul><li>천문학적인 수를 정확하게 표현하기 위해서는 가변적인 표현 범위를 가지는 자료구조가 필요 </li></ul>연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  3. 3. Big Integer 구현 방법 <ul><li>가장 쉽고 직관적인 방법 </li></ul><ul><ul><li>문자열로 표현 </li></ul></ul><ul><ul><li>사람이 계산하는 것과 똑같이 계산 </li></ul></ul><ul><li>K 진수 사용 </li></ul><ul><ul><li>하나의 배열 원소가 0 ~ K-1 까지의 값을 가짐 </li></ul></ul><ul><ul><li>A n 의 1 은 A n-1 의 K </li></ul></ul><ul><li>각 단위 계산에서 표현 범위를 벗어나지 않도록 주의 </li></ul>연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  4. 4. Big Integer 더하기 algorithm bigint_plus input array arr, integer num output array arr i ← 0 while num is not zero do k ← arr[i] + num arr[i] ← k % 1010 num ← k / 1010 i++ 연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  5. 5. Big Integer 빼기 algorithm bigint_plus input array arr, integer num output array arr i ← 0 while num is not zero do arr[i] ← arr[i] - num if arr[i] < 0 then arr[i] ← arr[i] + 2 16 num ← 1 i++ 연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  6. 6. 연습 문제 UVA10106 <ul><li>http://acm.uva.es/p/v101/10106.html </li></ul><ul><li>두 수를 곱하는데 각각의 범위가 10 250 까지 이므로 Big Integer 문제 </li></ul>UVA495 <ul><li>http://acm.uva.es/p/v4/495.html </li></ul><ul><li>Fibonacci 수를 출력하는 문제 n 이 5000 까지 입력될 수 있으므로 Big Integer 로 처리하여야 함 </li></ul>UVA113 <ul><li>http://acm.uva.es/p/v1/113.html </li></ul><ul><li>이분 검색을 사용하여 k 를 찾아냄 </li></ul>연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  7. 7. 그래프 정의 <ul><li>정점의 집합과 각 정점을 이어주는 간선의 집합으로 이루어짐 </li></ul><ul><li>G = { V, E } </li></ul><ul><ul><li>V = Vertex set 정점 집합 </li></ul></ul><ul><ul><li>E = Edge set 간선 집합 </li></ul></ul>연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일 서울 대전 광주 부산 제주
  8. 8. 그래프 구현 방법 <ul><li>인접 리스트 </li></ul><ul><ul><li>간선 정보를 배열로 가짐 </li></ul></ul><ul><li>인접 행렬 </li></ul><ul><ul><li>a ij 는 i 번째 정점과 j 번째 정점의 연결 정보를 가짐 </li></ul></ul><ul><ul><li>사용하는 메모리의 크기가 정점의 개수의 제곱에 비례 </li></ul></ul><ul><li>Linked List </li></ul><ul><ul><li>각 정점을 포인터로 연결 </li></ul></ul>연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  9. 9. 그래프 최단 경로 알고리즘 <ul><li>Dijkstra </li></ul><ul><ul><li>두 정점간의 최단 경로를 구하는 알고리즘 </li></ul></ul><ul><ul><li>O(n 2 ) </li></ul></ul><ul><li>Floyd </li></ul><ul><ul><li>각 정점간의 최단 경로를 모두 구하는 알고리즘 </li></ul></ul><ul><ul><li>구현이 간단함 </li></ul></ul><ul><ul><li>O(n 3 ) </li></ul></ul>연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  10. 10. 그래프 Dijkstra( 다잌스트라 ) 알고리즘 <ul><li>시작 정점을 부분 그래프에 포함시킴 </li></ul><ul><li>부분 그래프에서 이동할 수 있는 정점 중 가장 가까운 정점을 선택 </li></ul><ul><li>선택된 정점을 부분 그래프에 포함시킴 </li></ul><ul><li>모든 정점이 다 포함될 때 까지 반복 </li></ul>연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  11. 11. 그래프 Dijkstra( 다잌스트라 ) 알고리즘 연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  12. 12. 그래프 Floyd 알고리즘 <ul><li>a ij = if 정점 i 에서 정점 j 가 연결되어 있으면 then 간선의 길이 else ∞ </li></ul><ul><li>a ij = min( a ij , a ik + a kj ) </li></ul><ul><li>구현이 매우 간단함 </li></ul><ul><li>for i do </li></ul><ul><li>for j do </li></ul><ul><li>for k do </li></ul><ul><li>if a ij > a ik + a kj then a ij = a ik + a kj </li></ul>연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  13. 13. 트리 정의 <ul><li>사이클 ( 순환 ) 이 없는 그래프 </li></ul><ul><li>노드 : 각 정점 </li></ul><ul><li>루트 : 최상위 노드 </li></ul><ul><li>리프 : 최하위 노드 </li></ul><ul><li>높이 : 루트 노드에서 리프 노드까지 거리 </li></ul>연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  14. 14. 트리 정의 <ul><li>사이클 ( 순환 ) 이 없는 그래프 </li></ul><ul><li>노드 : 각 정점 </li></ul><ul><li>루트 : 최상위 노드 </li></ul><ul><li>리프 : 최하위 노드 </li></ul><ul><li>높이 : 루트 노드에서 리프 노드까지 거리 </li></ul>연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  15. 15. 트리 최소 신장 트리 <ul><li>어떤 그래프에서 정점의 개수 V 에 대하여 V-1 개의 간선을 선택해 만든 트리를 신장 트리라고 함 </li></ul><ul><li>가능한 신장 트리 중에서 간선 가중치의 합이 최소가 되는 신장 트리를 최소 신장 트리 라고 한다 . </li></ul><ul><li>Kruskal </li></ul><ul><ul><li>간선을 가중치 순으로 오름차순 정렬하여 사이클이 만들어지지 않도록 하는 간선을 순차적으로 선택 </li></ul></ul><ul><li>Prim </li></ul><ul><ul><li>부분 최소 신장 트리에서 가능한 가장 작은 가중치의 간선을 선택 </li></ul></ul>연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일
  16. 16. 트리 이진 트리 <ul><li>어떤 노드도 두 개 이하의 자식을 갖는 트리 </li></ul><ul><li>배열을 이용하여 쉽게 구현 가능 </li></ul><ul><ul><li>n 이 현재 노드일 때 n/2 는 부모 n*2, n*2+1 은 두 자식 </li></ul></ul>연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일 1 2 3 4 5
  17. 17. 트리 이진 트리 <ul><li>이분 검색 트리 </li></ul><ul><ul><li>트리를 생성할 때 왼쪽 자식이 오른쪽 자식보다 항상 크거나 작도록 함 </li></ul></ul><ul><ul><li>빠른 검색이 가능 log 2 n </li></ul></ul><ul><li>힙 </li></ul><ul><ul><li>부모가 항상 자식보다 크거나 작도록 만든 완전 이진 트리 </li></ul></ul><ul><ul><li>배열을 사용하여 간단하게 구현 가능 </li></ul></ul><ul><ul><li>Priority Queue 를 구현하는 데 많이 사용 </li></ul></ul>연세대학교 정보특기자 YUTAR 2007 년 6 월 21 일 목요일

×