Professional Documents
Culture Documents
강의 정리 - 기말2-1
강의 정리 - 기말2-1
3. 2차원 패리티 비트
- 송신자가 데이터를 수신자에게 전송
- 수신자가 데이터의 변조 또는 오류 확인 가능
1. 문제를 이해한다.
2. 계획은 세운다. 알고리즘 설계 모델 사용
- 짝수 패리티를 가정하고 행 패리티와 열 패리티 추가하면 3. 계획을 실행한다. 데이터 분석 창조적 생각
<- 다음과 같이 됨. 4. 풀이과정 재점검
4. 바코드(bar code)
: 제품의 고유 번호를 가는 막대형 표시로 나타냄
- 빠르고 정확한 상품가격 인식이 필요
- 소개하는 바코드는 EAN코드의 바코드
원래 데이터
: 10001 01001 10110 11001 10010
- 1 -
6. 체크섬(Checksum)
국어 영어 수학
김 O O 100 90 85
이 O O 90 90 90
⋯ ⋯ ⋯ ⋯
한 O O 80 90 90
T : 원래의 데이터
[problem]
* 체크디지트를 이용해 오류 확인 가능
전송 중 데이터의 변조를 발생하거나, 저장 중 데이터의 변조
가 발생한 것을 어떻게 확인할 수 있는가?
5. ISBN(International Standard Book Number)
- 책의 고유 번호 국어 영어 수학 체크섬
- 바코드의 규정을 따름 김 O O 100 90 85 275
- ISBN 데이터의 완전성을 확인하기 위한 방법으로 이 O O 90 90 90 270
check digit 설정 ⋯ ⋯ ⋯ ⋯ ⋯
한 O O 80 90 90 260
T : 체크섬 열을 생성
- 체크섬 값 = 국어 + 영어 + 수학
(설명을 위한 단순한 방법. 다양한 방법 가능)
- 누군가가 과목의 성적을 바꾼다면 체크섬≠국어+영어+수학
T : 원래의 데이터
T' : 수신자가 받은 데이터 또는 1년후의 데이터상태
ü 변조되었다는 사실만 파악
ü 이 예에서는 변경된 데이터의 위치 확인 불가
Computational Thinking ü 과목의 성적과 체크섬을 동시에 변조하면
변조사실 확인 불가
- 패리티 비트의 개념에서 출발하여 쉽게 데이터의 [해결방안]
무결성을 확인할 수 있는 방법을 고안했다. 체크섬을 계산하는 방식을 예상하기 어렵게 만든다.
- 데이터의 변조 확인 방법을 컴퓨터에 접목하여 단순 합이 아닌 방법으로 설정
물건관리의 자동화를 할 수 있다. ex) 체크섬 = (35*국어 + 56*영어 + 2*수학*수학)/6
- be creative
- EAN bar code 무결성을 확인하는 알고리즘을
만들 수 있는가?
- 학번의 무결성을 확인하는 방법을 고안하라.
문제 해결 과정 Computational Thinking
- 각 과목 성적의 체크섬을 추가함
1. 문제를 이해한다. 알고리즘 설계
95점인 경우 각 자리수의 합으로 9+5=14 추가
2. 계획은 세운다. 데이터 표현
- 모든 과목 성적의 합 체크섬이 과목 성적과 일치하더라도
3. 계획을 실행한다. 데이터 분석
각 과목의 체크섬 확인으로 과목 성적 변조 확인 가능
4. 풀이과정 재점검 자동화
- 2 -
[해결방안] 정상 수신인 경우
Computational Thinking
1. 문제를 이해한다.
2. 계획은 세운다. 알고리즘 설계 공식 사용
3. 계획을 실행한다. 데이터 분석 창조적 생각
4. 풀이과정 재점검
[problem]
그림파일 B는 그림파일 A와 동일한 것인지 확인할 방법이 있
는가?
- 3 -
- 특정 데이터를 찾기 위해서는 처음 데이터부터 확인하고
Computational Thinking 링크를 따라 이동하면서 확인해야함
Computational
문제 해결 과정 문제 해결 전략
Thinking
---------------------------------------------
[ 중심 내용 ]
- 배열 및 연결리스트
- 선형검색
- 이분검색
- 색인순차검색
< 선형검색(Linear Search) >
- 해싱
[problem]
무작위로 문자가 표시되어 있는 카드 16장을 뒤집어 놓는다.
< 데이터의 저장과 검색 > 이 중 특정카드가 표시된 카드를 찾는다. ex) K
- 데이터의 추후 활용을 위해 데이터 저장
- 저장할 때 가능한 한 저장 공간 줄임
- 활용 시, 데이터 찾기 쉽게 저장
- 데이터를 찾는 방법과 저장 방법에는 직접적인 관계 있음
- 대규모의 데이터를 저장, 검색하므로
저장, 검색 방법의 중요성 증대 Computational
문제 해결 과정 문제 해결 전략
Thinking
< 배열 >
1. 문제를 이해한다.
- 사용할 공간을 초기에 설정한 후, 변경 불가능
2. 계획은 세운다. 알고리즘 설계 순서 리스트 작성
- 초기에 설정한 데이터의 개수보다 더 많은 데이터가
3. 계획을 실행한다. 데이터 모음 그림을 그린다
입력될 경우, 저장 불가능
4. 풀이과정 재점검
- 크기가 고정된 데이터 저장에 사용 ex) 월별 판매액
- 데이터가 저장된 위치를 아는 경우 데이터 값 쉽게 확인 알고 있는 데이터나 정보는 무엇인가?
- 배열에 저장되어있는 특정 데이터의 저장 위치 → 카드의 장수, 찾으려는 카드
(첨자, 인덱스)를 모르는 상태에서 특정 데이터를 찾기 모르는 것은 무엇인가?
위해서는 배열의 제일 처음부터 위치는 변경하면서 하나씩 → 찾으려고 하는 카드의 위치
찾아 나가야함 조건들은 무엇인가?
- 데이터의 개수가 가변적일 때 사용 → 한 번에 한 장의 카드의 문자가 보이게 하여 찾는 카드가
- 메모리 크기의 한도에 도달하지 않는 한, 데이터 추가 가능 맞는지 확인
(어느 위치에도 추가 가능) → 찾는 카드가 전체 카드 내에 반드시 있는지 불분명
- 데이터의 삭제 쉬움 있을 경우와 없을 경우로 나누어서 생각해야 함
- 4 -
[해결방법]
- 카드의 가장 왼쪽(처음)부터 시작하여 한 장씩 뒤집으면서
찾는 카드가 맞는지 확인
- 찾는 카드가 맞으면 종료/아니면 오른쪽으로 이동
의사코드
흐름도
- 5 -
의사코드
컴퓨터 과학
+ 정렬(sort)
데이터는 숫자, 문자로 구성됨
각 구성요소는 값의 대소 순서가 미리 정해져있음
데이터 값이 증가/감소 순서로 데이터 정리하는 작업
컴퓨터 과학
* 카드열의 중앙 : (짝수) / (홀수)
- 6 -
< 색인순차검색(Indexed Sequential Search) >
색인(인덱스) : 사전, 전화번호부에서 특정 알파벳이 시작하는 Computational Thinking
위치를 쉽게 찾을 수 있도록 표시해둔 것.
[풀이과정 재점검]
- 특정 데이터 검색 시, 먼저 색인 확인하고 해당 위치로 - 데이터를 어떻게 표현하고 변환했는가?
이동한 후 순차적으로 검색하는 방법 - 데이터의 변환 공식을 어떻게 작성했는가?
- 컴퓨터에 저장된 데이터도 색인순차검색으로 찾을 수 있음 - 5명의 학생이 있을 때, 미리 10개의 새로운 번호를
* 데이터가 정렬되지 않아도 무방 준비해서 5명의 학생에게 새로운 해시함수를 이용해서
부여하면 어떻게 될까? 설계해보시오.
< 해싱(Hashing) > - 10명의 사람이 있다. 이 사람들에게 0-9까지의 새로운
[problem] 번호를 부여할 수 있는 해시함수를 설계하시오.
5명의 학생에게 4자리의 수를 이용해서 학번을 부여했다. - 설계한 해시함수가 적절한 지 10개의 데이터를
학생을 4자리 학번으로 구분하려니 매번 4자리 수를 표시해 이용해서 검증하시오.
야 하므로 단순화하기로 한다. 5명의 학생들을 0,1,2,3,4 숫자
를 이용하여 나타낼 수 있는 방법을 설계하시오. ---------------------------------------------
→ 학생들에게 새로운 번호를 부여하는 것은
특정 공간에 정보를 저장하는 것과 동일 [ 중심 내용 ]
- 이진검색트리
- 최대값 및 최소값 검색
[해결방안]
각 학생의 학번의 각 자릿수를 합친 후 5로 나눈다.
이 때, 나머지를 학생의 새로운 구분번호로 한다.
ex) 1507 → 1+5+0+7 = 13, 13/5 = 2, 나머지 3
* 체크섬의 일종
- 7 -
* 데이터가 트리 내부에 없을 수도 있을 경우
의사코드
흐름도
의사코드
흐름도
- 80에서 왼쪽 노드가 없다는 것을 확인한 후,
79를 80의 왼쪽자식노드로 추가
- 8 -
* 새로운 데이터 추가(이미 있는 데이터는 추가 안할 경우) [연습문제]
의사코드 데이터가 1 10 2 9 3 8 4의 순서로 입력될 경우의 이진검색
트리를 작성하시오.
흐름도
[연습문제]
데이터 5 1 3 9 7 2 4 6 8을 이용하여 이진검색트리를 완성
하시오.
- 9 -
< 최적 이진검색트리 >
[problem] 컴퓨터 과학
다음의 단어를 이진검색트리에 저장한다.
- 이진검색트리는 데이터베이스에서 자료를 저장하는
the, be, and, of, a
기본 구조로 사용됨
어떻게 저장할 때 단어의 평균검색시간을 최소로 할 것인가?
- 데이터의 생성 순서에 따라 이진검색트리 달라짐
- 어떤 경우에는 이진검색트리가 단순히 연결리스트의
구조가지게 됨
- n개의 데이터가 저장된 이진검색트리에서 하나의
데이터를 찾는 평균 시간은 log 우수한 성능 보임
Computational
문제 해결 과정 문제 해결 전략
Thinking
Computational Thinking
- 10 -
흐름도
컴퓨터 과학
1. 문제를 이해한다.
가능성들을 제거
2. 계획은 세운다. 알고리즘 설계
직접 추론 사용
3. 계획을 실행한다. 데이터 모음
잔꾀를 사용
4. 풀이과정 재점검
[방법1]
최소값을 먼저 찾고, 나머지 데이터에서 최대값 찾는다.
[연습문제]
다음 자료에 대해 최소값을 구하는 방법을 적용해보시오.
[방법2]
단계1 : 모든 데이터에 대해 인접한 두 개의 데이터를
비교하여 둘 중 작은 값, 큰 값을 구분한다.
단계2 : 작은 값들의 집단S, 큰 값들의 집단L을 구성한다.
단계3 : S에서 최소값을, L에서 최대값을 찾는다.
Computational Thinking
- 11 -
[연습문제]
4 3 7 8 10 2 5 1 6 9에서 최대값, 최소값을 찾으시오.
Computational Thinking
컴퓨터 과학
- 12 -