컴퓨터개론 5주차 - yulha1128000-cyber/qqwi GitHub Wiki

1-1. 알고리즘이란 무엇인가

알고리즘

  • 정의: 문제 해결을 위한 유한하고 명확한 절차
  • 흐름: 입력(정보, 데이터)-> 처리(입력 기반 해결)-> 출력(결과)

알고리즘 vs 프로그램

  • 알고리즘: 절차적 흐름에 따라 처리
  • 프로그램: 설계된 명령에 따라 구현

`Q. 자판기 구매를 입력, 처리, 출력으로 나누면?

A: 입력: 돈 넣고 음료수 고르기, 처리: 넣은 금액을 확인하고 음료수 재고 확인, 출력: 음료수`


1-2. 좋은 알고리즘의 조건

  1. 좋은 알고리즘의 다섯 조건
  • 명확성: 모든 단계의 지시가 모호하지 않고 명확해야 함
  • 유한성: 유한한 수의 단계 후에 반드시 작업이 종료되어야 함
  • 정확성: 단계가 수행되어 올바를 결과를 도출해야 함
  • 일반성: 다양한 입력에 적용 가능해야 함
  • 효율성: 시간과 자연을 효율적으로 사용해야 함
  1. 모호한 지시 vs 명확한 지시
  • 모호한 지시: 적당한 이라는 표현을 사람마다 기준이 다르고 모호함
  • 명확한 지시: 정확한 지시는 지시가 명확해 올바르게 수행 가능

즉, 컴퓨터가 오해하지 않게 명확하게 하는 것이 중요 3. 종료 확인

  • 유한 단계: 단계를 거치며 올바른 알고리즘
  • 무한 반복: 명확한 종료 조건이 없어 무한 반복

유한성을 확보하는 것이 중요 4. 좋은 알고리즘?

  • 적절한 시간에 완료됌
  • 자원을 효율적으로 사용함
  • 예외 상황에서도 올바르게 처리함

`Q. 학교 가는 절차를 다섯 조건으로 평가해 보세요

A. 명확성: 학교 가는 단계가 구체적으로 정해져 있어야 함, 유한성: 학교 도착 후 종료, 정확성: 정해진 절차에 따라 학교 도착, 일반성: 출발 장소나 교통 수다닝 달라져도 적용 가능, 효율성: 시간, 비용에 맞게 선택`


1-3. 입력, 처리, 출력으로 문제 보기

  1. 입력
  • 모든 문제 해결의 출발점
  • 데이터 종류: 숫자, 문자, 논리값 등
  • 데이터 형식: 정수, 실수 등
  • 데이터 범위: 최솟값, 제약 조건 등
  1. 처리
  • 문제를 해결하기 위한 논리적 과정
  • 과정: 계산-> 비교-> 조건-> 반복
  1. 출력
  • 사용자에게 최종 결과물 저장
  • 결과 값: 최종 값
  • 표시 형식: 표, 목록, 그래프
  • 오류 메시지: 잘못된 입력, 경고
  1. 사례

`Q. 택시 요금 계산기의 입력, 처리, 출력, 예외는?

A. 입력: 탑승 거리, 탑승 시간, 추가 요금 등 / 처리: 기본, 거리, 시간 요금 계산 / 출력: 총 요금, 상세 내역 / 예외: 비정상적인 값, 시스템 오류`


1-4. 순서도(프로 차트)로 알고리즘 표현하기

  1. 기본 도형
  • 타원: 시작, 종료
  • 사각형: 데이터 변경, 처리, 연산 동작
  • 평행사변형: 입출력
  • 마름모: 조건을 비교해 참과 거짓 판단
  1. 화살표
  • 이전 단계----> 다음 단계 (실행 방향)
  1. 로그인 순서도
  • 한 눈에 시스템 파악 가능
  • 점검 기준: 모든 경로 연결 여부, 참과 거짓 표시 여부, 종료 존재 여부

`Q. 20세 이상 순서도를 그려보세요

A.


1-5. 의사코드로 알고리즘 표현하기

  1. 의사 코드
  • 알고리즘을 표현하기 위해 만들어짐
  • 프로그램의 논리적 구조를 직관적으로 텍스트로 설계
  • 일상어: 자연어 + 프로그래밍 구조
  • 논리와 절차를 정확하게 표현
  1. 작성 원칙
  • 한 줄에 한 동작: 가독성 향상
  • 들여쓰기: 가독성 향상
  • 의미 있는 변수: 이름 설정
  • 일관된 표현
  • 구체적 절차가 중요
  1. 큰 수 찾기

`Q. 짝수, 홀수 판정 의사코드를 작성해 보세요

A.


2-1. 순차 구조

  1. 순차 구조: 한 단계 씩 실행
  2. 의존 관계
  • 입력-> 계산-> 출력
  • 단계별로 순서대로 진행하는 것이 중요
  1. 넓이 계산
  • 가로 입력-> 세로 입력-> 넓이(가로x세로) 계산-> 출력
  • 계산: 가로와 세로 값이 입력되지 않은 상태에서 계산 수행은 불가능

`Q. 직사각형 넓이 절차를 배열해 보세요

A. 입력(가로, 세로 값)-> 넓이 계산(가로X세로)-> 값 출력`


2-2. 선택 구조

  1. 참과 거짓: 조건식이 주어질 때 참 또는 거짓으로 평가
  2. 3가지 선택
  • 단일 선택: 참-특정 명령 수행, 거짓-아무것도 하지 않고 지나감
  • 양자택일: 참과 거짓 중 하나 선택
  • 다중 선택: 조건이 여러 개 일 때 하나만 선택
  1. 경계값
  • 논리 오류: 부등호(<,> 등) 잘못 작성 시 값ㅇ이 어느 공간에도 포함되지 않거나 두 공간에 같이 곂쳐버리는 곂침 발생
  • 기호를 명확하게 해주는 것이 중요

`Q. 점수별 A, B, C 조건을 작성해 보세요.

A. 등급A: >=90(90이상), 등급B: 80=< and <90(80이상 90미만), 등급C: <80(80미만)`


2-3. 반복 구조

  1. 횟수 반복
  • 반복 횟수가 명확하게 정해진 경우 사용
  • 횟수 카운트 후 목표에 도달했을 때 종료
  1. 조건 반복
  • 맞을 때까지 반복
  • 시도 횟수 제한 가능
  1. 반복문이 오류 없이 진행되도록 하기 위한 4가지 필수 요소
  • 초기값: 반복 시작 전 초기화
  • 반복 조건: 반복 유지 여부
  • 실행 내용: 반복할 때 필요한 명령문
  • 상태 변화: 조건이 언젠가 거짓이 되도록 변화시킴
  1. 반복문 오류 주의
  • 무한 반복: 조건이 항상 참이면 멈추지 않아 시스템 과부하
  • 한 번 더 또는 덜 실행: 데이터 결과가 좋지 않음

`Q. 1부터 10까지 합의 반복 요소를 설정해 보세요.

A.


2-4. 변수와 상태 변화

  1. 변수: 데이터를 저장하기 위해 이름을 붙여둔 메모리 속의 저장 공간
  2. 대입
  • 새로운 값으로 갱신
  • 시간이 흐르고 명령이 실행됨에 따라 상태값이 변화
  1. 주의 사항
  • 초기화: 초기화 하지 않으면 메모리 안에 남아있던 이전의 변수 값이 포함되어 계산이 부정확해질 위험
  • 변수 이름=값(x): 이름과 내용물 혼동x

`Q. 3000원 상품 두 개에서 합계 변화를 적어 보세요.

A. 초기= 0원-> 상품 1개= 3000원-> 상품 2개-> 6000원`


2-5. 알고리즘 실행 추적

  1. 추적표

단계, 명령, 조건, 변수 값, 출력을 표로 검증하는 방법

  1. 1부터 3까지의 합

변수 값의 변화를 표로 기록해 검증

  1. 시험 입력
  • 정상값: 일반적인 값을 입력하고 올바를 결과가 도출되는지 확인
  • 경계값: 경계값이 문제가 있는지 확인
  • 예외값: 잘못된 입력 확인

다양한 입력을 통해 오류 발생 확인 4. 하나의 입력 성공=x

  • 다양한 입력을 넣고 테스트 해야 함
  • 여러 번 검증 필요

`Q. 반복 알고리즘의 변수 변화를 표로 적어 보세요.

A.


3-1. 문제 분해와 패턴 찾기

  1. 문제 분해
  • 복잡한 문제를 해결 가능한 작은 문제(하위 문제)로 나누어서 처리
  • 하위 문제들을 개별적으로 해결하고 합침
  • 이때 하위문제들은 독립적으로 기능을 개발하고 전체 시스템 구축 발달에 이바지 가능
  1. 패턴 찾기
  • 입력-> 처리-> 출력
  • 다른 문제 해결 때 재사용 가능-> 개발 생산성 향상
  1. 문제 분해 최대한 작게x
  • 무조건 작게 하면 에너지 사용량 증가 위험
  • 독립적으로 해결 가능한 적절한 단위로 나누어야 함

`Q. 학교 축제를 네 하위 문제로 나누어 보세요.

A. 장소 준비, 프로그램 기획, 홍보와 참가신청, 예산과 물품관리 `


3-2. 추상화와 모델링

  1. 추상화
  • 목적에 필요한 핵심 특징만 선택
  • 불필요한 세부 사항은 숨김
  • 복잡성은 줄이고 본질을 남김
  1. 모델링 순서: 목적 설정-> 변수 선택(문제해결에 필요한 핵심 데이터)-> 관계(선택한 변수들 간에 상호작용과 연관 관계)-> 가정(시스템 작동에 필요한 기본 조건과 제약 상황)-> 검증(만들어진 모델이 올바르게 해결하는지)
  2. 지하철 노선도

세부 정보는 과감히 삭제하여 핵심 특징만 남김(추상화)`` 4. 추상화는 대충 생략?x

  • 목적에 따라서 필요한 정보만 선택하는 고도의 논리적인 행위

`Q. 처음 방문한 학생용 학교 지도에 남길 정보는?

A. 건물들의 위치와 명칭, 길 안내 동선, 정문 입구 등`


3-3. 탐색 알고리즘

  1. 순차 탐색
  • 정렬되지 않은 목록에서도 동작
  • 앞에서 부터 순서대로 동작
  • 원하는 값이 가장 앞에 있는 경우 빠르게 찾기 가능\
  1. 이진 탐색
  • 정렬된 목록에서만 동작
  • 정렬된 범위의 가운데를 비교하여 범위가 절반
  1. 선택 기준
  • 정렬 여부: 정렬x(이진 탐색), 정렬o(순차 탐색)
  • 목록 크기: 목록이 큼(이진 탐색 효과 큼)
  • 정렬 준비 비용: 정렬 준비 시 시간이 듦

3-4. 정렬 알고리즘과 비교

  1. 정렬 기준
  1. 선택 정렬: 값들 중 최소 값을 가장 앞으로 보내고 나머지 값들 중 가장 최소 값을 앞으로 보내는 과정 반복
  2. 버블 정렬: 이웃 값을 비교해서 정렬 완료될 때까지 계속 반복
  3. 주의 사항
  • 동점 처리 여부
  • 비교 규칙 설정
  • 정렬 기준 명확히 기록

`Q. 5,2,4,1을 선택 정렬로 단계별 정리해 보세여.

A. 초기- 5 2 4 1 1단계- 1 2 4 5 2단계- 1 2 4 5 3단계- 1 2 4 5`


3-5. 알고리즘의 효율과 검증

  1. 평가 기준: 정확성, 실행 시간(시간 단축), 메모리(사용량이 적은지), 이해와 유지 보수(복잡한지), 예외 처리(안전하게 처리 하는지)
  2. 입력 크기

큰 데이터: 순차탐색- 100만번 연산, 이진탐색- 순차탐색보다 적은 계산

  1. 검증 과정: 테스트 입력-> 기대 결과-> 실제 결과-> 원인 수정-> 재시험

`Q. 제출자 검색의 두 방법을 시간, 준비, 비용으로 비교해 보세요.

A. `