알고리즘 34

[알고리즘] 알고리즘 설계와 분석의 예

문제 한 쌍의 토끼들은 한 달이 될 때에 한 쌍의 토끼를 낳고 두달이 될 때에 또 다른 한 쌍의 토끼를 낳는다. 내가 방금 한 쌍의 새로 태어난 토기들을 샀다면 지금부터 n번째 달에 몇 쌍의 토끼들이 태어날까? 주 : n이 주어지면 토끼 쌍들의 수를 구해야 한다. n은 매개 변수이다. f(n)을 지금부터 i 번째달에 태어난 토끼 쌍들의 수라고 하자. n 0 1 2 3 4 5 6 ... f(n) 1 1 2 3 5 8 13 ... > f(n) = f(n-1) + f(n-2) / f(0) = f(1) = 1 / n >= 2 (수학적 풀이) 점화식을 풀어서 "수학적"으로 해결 (알고리즘) f(n)을 구하는 알고리즘 설계 : 매개 변수 : n // 출력값 : f(n) ⓐ n이 0이면, f(n) = 1 ⓑ n이 1..

[알고리즘] 용어정리

1. 문제(Problem) - 우리가 해답을 찾으려고 묻는 질문 ex) n개의 숫자들의 목록 S를 비내림차순(non-decreasing/오름차순)으로 정렬하자. 2. 매개변수(Parameter) - 문제에 특정한 값이 지정되어 있지 않은 변수. 위의 예에서 S와 n이 매개 변수역할을 한다. 3. 문제의 사례(Instance) - 문제의 매개 변수들에 각각 특정한 값을 지정한 것 ex) 위문제들중 문제의 한 사례는 / S = [10, 7, 11, 5, 13, 8], n = 6 4. 문제의 한 사례에 대한 해답 - 문제의 한 사례에서 문제가 제기하는 질문에 대한 해답 ex) 위의 사례에 대한 해답은 [5, 7, 8, 10, 11, 13]이다. 5. 알고리즘 - 문제의 각 사례에 대한 해답을 얻기 위한 단계별..

[알고리즘] 알고리즘의 효율성과 평가 / 데이터 구조와의 관계

1. 알고리즘의 효율성 프로그래머들은 알고리즘을 작성하기 위한 3가지 요소를 경험을 통해 알게 되었고 프로그램을 작성시 고려해야한다. > 그 세 가지 효율성 : 시간의 효율성, 공간의 효율성, 코드의 효율성 ⓐ 시간의 효율성 - 모든 알고리즘에서 가장 중요하게 생각해야 하는 요소 - 컴퓨터에서 실행하는 프로그램이 주어진 조건에 맞춰서 적은 시간을 사용하는 것이 좋음 무한대의 시간을 사용할 수 없음. 가능하면 적은 시간을 사용하는 것이 좋음. ex) 게임소프트웨어 : 동작에 대한 반응속도가 빨라야 한다. - 주어진 조건에서 문제를 해결하기 위해 가능한 한 빠른 실행 속도를 가진 효율적인 해결책을 찾는 것 문제 : Data라는 이름의 배열안에 1부터 1000까지의 모든 정수들이 차례대로 저장되어있다. 배열 ..

[알고리즘] 알고리즘(Algorithm)의 유래/개요

1. 알고리즘의 유래 - 사전적 의미 : 주어진 문제를 해결하기 위한 특별한 방법 - 공학적 의미 : 주어진 문제를 컴퓨터를 사용하여 풀기 위한 좀 더 효율적인 방법 > 효율적 : 실행속도가 빠르거나 메모리를 적게 차지하는 것 따위의 것 2. 알고리즘 이란? - 단순하게 생각하면 문제를 해결하는 방법으로 수학 공식과 다르게 정답이 정해진 것은 아니다. ex) 대학교 학생에게 학번을 부여하는 방법을 기술 하시오. 단, 학번은 학생고의의 번호로 하나의 번호를 두명이 가지지 못한다. > 위 문제에서는 만족시킬 조건이 알고리즘에 큰 영향을 주지 않기 때문에 알고리즘의 우열을 가릴수 없다. ex) 주민등록번호 : YYMMDD(탄생일) -(MorF)고유번호 > ⓐ 탄생일 ⓑ M/F구분 ⓒ 고유번호 부여방법(알고리즘..