본문 바로가기

반응형

Programming/Algorithm

(9)
[C언어] 정렬알고리즘, 선택알고리즘(Selection Sort) #include #define max 10 int main(void) { // 사용할 변수를 선언한다. int i, j, min, index, temp; // 정렬할 숫자 int array[max] = { 2,5,7,8,9,1,3,6,10,4}; for (i = 0; i array[j]) { min = array[j..
알고리즘과 자료구조 초보자 알고리즘을 안다는 것은 특정 알고리즘이 존재한다는 것을 알고 있을 뿐만 아니라, 언제 적절히 사용할 수 있는 것인지를 아는 것을 말한다. 문제를 작은 단위로 쪼개어서 최적의 알고리즘을 찾아내는데, 이때 하는 것을 알고리즘식 생각 혹은 "Algorithmic Thinking" 이라고 표현한다. 알고리즘의 속성 1. 명확히 정의된 문제와 입력값, 출력값 2. 알고리즘의 프로세스는 매우 구체적인 단계로 이루어져 있다. 3. 그 단계들 역시 명확히 구분되어야 한다. 4. 알고리즘은 결과값을 출력해야 한다. 5. 제한된 시간 내에 완수해야 한다. 좋은 알고리즘의 속성 옳음Correctness : 1. 문제와 입력과 출력이 정확히 정의되어 있다. 인풋값에 어떤 값을 넣어도 정확한 답을 얻을 수 있다. 2. 문제를 ..
프로그래머처럼 생각하는 법 좋지 않은 조언 - 간단한 게임부터 만들어봐라' - 테트리스 같은 거 - C++ 같은 거 많이 쓰니까 그거부터 해봐라. - 제일 좋은 방법은 너가 풀고 싶은 문제부터 풀기 시작하는거야. - 실제 real world 문제를 풀어보도록 하자. 좋은 조언 - 프로그래밍은 언어에 관한 것이 아니다. - 언어는 사실 중요하지 않다. - 외워야할 것은 어디에도 없다. - 프로그래밍 대부분은 수학과 관련이 없다. - 프로그래밍 언어는 사실 인간의 언어보다 단순하다. - 프로그래밍은 사실 문제해결이다. - 바보같은 컴퓨터에 하나하나 가르쳐주는 것이다. 프로그래밍은 언어에 관한 것이 아니다. 1. 코딩은 8가지 개념만 있다. 2. 모든 언어에서 작용한다. 3. 이 개념을 인간의 언어로 쓰는 법을 배워라. 4. 자신이 쓰..
그리디 알고리즘 탐욕 알고리즘은 말그대로 눈앞의 최적의 상황만을 쫓아 최종적인 해답에 도달하는 방법이다. 탐욕알고리즘은 여러 경우 중 하나를 결정해야 할 때마다 그 순간에 최적이라고 생각되는 것을 선택해 나가는 방식으로 진행하여 최종적인 답에 도달한다. 탐욕 알고리즘 문제를 해결하는 법 1. 선택절차(Selection procedure) : 현재 상태에서의 최적의 해답을 선택한다. 2. 적절성 검사(Feasibility check) : 선택된 해가 문제의 조건을 만족하는지 검사한다. 3. 해답 검사(Solution Check) : 원래의 문제가 해결되었는지 검사하고, 해결되지 않았다면 선택 절차로 돌아가 위의 과정을 반복한다. Greedy Algorithm an algorithmic paradigm that follow..
디지털이란? 아날로그의 디지털화 아날로그 연속적으로 이어지는 정보 자연의 모든 것은 아날로그 정보 디지털 숫자, 이산적인 정보 바이너리 디짓 - 비트 셀 수 있는 정보 현실세계의 물질, 생각, 활동은 그 자체로 디지털로 변환될 수 없다. 기호화되어 비트로 변환되고 표현된다. 현실공간은 원자 디지털공간은 비트 컴퓨팅 컴퓨터가 데이터를 처리하는 절차적 과정 초기의 컴퓨터는 사람보다 계산을 빠르고 정확하게 처리하기 위해 개발 왜 2진법? 정보를 다루는 가장 경제적인 방법이다.
프로그램과 소프트웨어 소프트웨어 공학 : 소프트웨어를 어떻게 잘 개발할 것인가? 자료구조와 알고리즘 프로그램을 어떻게 잘 개발할 것인가? 문제가 있으면, 처리방식과 대상으로 나누는데, 방식은 알고리즘, 대상은 자료로 분류하여 통합하고 프로그램으로 만든다. 프로그램은 프로그래밍 언어로 만들어지는데, 컴파일하고 cpu로 계산하고 메모리에 저장한 뒤 해답을 낸다. 자료구조 : 데이터를 어떻게 저장할 것인가 알고리즘, : 데이터를 어떻게 처리할 것인가. 자료구조의 정의 문제해결을 위해 데이터 값들을 알고리즘들이 효율적으로 접근하여 처리할 수 있도록 체계적으로 조직하여 표현하는 것. - 데이터란 무엇인가? - 데이터는 어떤 방식으로 컴퓨터에 표현되는가? - 데이터를 어떤 방식으로 처리하는 것이 보다 효율적인가? 알고리즘의 정의 특정 ..
브루트포스 알고리즘 = 전체 탐색 기법 브루트포스(brute force) 무식하게 모든 가능한 경우의 수를 탐색하면서 요구 조건에 충족되는 결과를 가져오는 알고리즘이다. 좋은 점은 100%의 확률로 정답만을 출력할 수 있다. - 알고리즘 설계의 가장 기본적인 접근 방법은 해가 존재할 것으로 예상할 수 있는 모든 영역을 전체 탐색한다. - 선형 전체를 탐색하는 순차 탐색 - 비선형 구조를 전체적으로 탐색하는 깊이 우선 탐색과 너비 우선 탐색이 가장 기본적인 도구다. 알고리즘 구성방법 주어진 문제를 선형 구조로 구조화한다. 구조화된 문제공간을 적절한 방법으로 해를 구성할 때까지 탐색한다. 구성된 해를 정리한다. 10의 약수의 합을 구하기 package bruteforce; import java.util.Scanner; public class Di..
ASCII(아스키 코드)란? 아스키란 미국 국립 표준 협회에서 표준화한 정보교환용 7비트 부호체계이다. 인간이 입력한 문자를 컴퓨터가 이용할 수 있는 신호로 바꾸어주는 것을 인코딩이라고 한다. 복잡한 신호를 0과 1이라는 디지털 신호로 변환하는 과정이다. 하지만 아스키는 2바이트 이상의 다양한 코드들을 표현할 수 없어서 현대에는 유니코드를 더 많이 사용한다.

반응형