전체 글 109

삽입정렬

자료구조: 일차원 배열시간 복잡도: 배열이 완전히 정렬된 경우 : 첫번째로 마주치는 반복문만 돌고 끝남배열이 거의 정렬된 경우 : O(N)  -> 사전작업을 통해 배열을 거의 정렬된 상태로 만들어놓고 삽입정렬을 수행하면 굉장히 빨라진다! 이런 매력 때문에 다른 정렬을 사용하는 경우에도 가끔씩 삽입 정렬을 섞어서 사용하곤 한다.일반적인 경우, 최악의 경우 : O(N^2)따라서 최선의 경우 O(N), 최악의 경우와 평균적인 경우 O(N^2)"재귀적 성격"을 포함하며, 삽입 정렬이 제대로 정렬한다는 것을 "수학적 귀납법"으로도 증명할 수 있다.삽입 정렬은 선택정렬보다 2.5배 정도 빠르고, 버블정렬보다 11배 정도 빠르다. ( 버블  사용 목적 : 숫자의 오름차순 or 내림차순 정렬#include #inclu..

선택정렬

자료구조: 일차원 배열 시간복잡도: 모든 경우에 O(n^2)사용 목적: 숫자의 내림차순 or 오름차순 정렬 #include #include int main(){ int arr[] = {1,2,3,4,5,6,7,8,9,10}; int arr_size = sizeof(arr) / sizeof(int); //mixing for(int i = 0; i 0; j--){ int max_num= arr[0]; int max_index = 0; for (int i = 0; i 개념 요약: (오름차순 기준) 배열의 처음부터 끝까지를 순환하여 가장 큰 값을 찾고, 맨뒤로 보내기(교환)

리스트 정리

리스트란? 데이터를 저장하다 보면, 변수만으로는 힘들 때가 있다. 한 종류의 데이터들을 세트로 관리하고 싶을 때가 대표적이다. 예를 들어서, 출석부를 떠올려보자. 한 반에 대략 30명의 학생들이 있다. 이 학생들의 이름을 저장하고 싶을 때, 이를 30개의 변수를 만들어서 저장하는 것은 무리이다. 어처피 같은 하나의 반의 학생들이니, 하나로 통합해서 관리하고 싶다는 욕구가 든다. 이를 위해 등장한 것이 리스트(list)이다. list(목록)라는 이름 그대로, 자료형에 상관없이 여러 데이터들을 하나의 집합으로써 관리할 수 있다. 리스트 이름 = [요소1, 요소2, ...] 와 같은 형식으로 선언하고 초기화할 수 있고 리스트 이름 = list() 로 비어있는 리스트를 선언할 수 있다. 리스트는 왼쪽부터 오른쪽..

문자열 정리

문자열이란 문자들의 나열을 뜻하고, 따옴표(작은 따옴표, 큰 따옴표)로 감싸져서 표현된 문자, 단어들을 의미한다. str1 = "Hello World" str2 = 'abcdefg' print(str1) print(str2) #작은 따옴표와 큰 따옴표 중 어느것을 사용해도 좋지만, 꼭 쌍을 맞춰서 사용해야된다. 위 코드의 결과처럼, 문자열로 감싸진 문자들이 그대로 출력되지만 문자열에서는 문자가 특별하게 인식되는 3가지 경우가 있다. 따옴표 안에 같은 종류의 따옴표를 사용했을 때 ex) " " " 이스케이프 시퀀스(escape sequence)를 사용했을 때 ex) \\ \' \" \a \b \f \n 등등 문자열 포메팅을 했을 때 -문자열의 원하는 위치에 원하는 값 집어넣기 각 경우에 대해 알아보고, 문..

연산자, 입력함수 정리

입력함수와 연산자에 대해 알아보도록 하겠다. 그리고 그에 필요한 두 가지 개념도 같이 알아보겠다. (숫자형과 불(bool)형) 학습 목차는 아래와 같다. 입력함수 - input 함수 (숫자형) (불(bool)형) 수식연산자 논리연산자 관계연산자 input 함수는 입력을 받는 함수이다. 일반적으로 값은 입력받는다는 것은 그 값을 저장해서 활용하겠다는 뜻이므로, 변수에 저장하는 형태로 함께 쓰인다. A = input() 예시는 위와 같다. 어떤 데이터를 사용자로부터 입력받고, 그 값을 A라는 이름의 변수에 저장하라는 뜻이다. 별다른 조치 없이 input()함수로 입력을 받으면, 문자열로 받는다. 즉, 1을 입력했다면 이는 숫자 1이 아니라 문자 1로 저장된다는 뜻이다. 사용자로부터 입력을 받을 때, 무엇을 ..

변수와 출력함수

컴퓨터는 기본적으로 수학과 과학에 기초한다. 다시 말해, 공학은 자연과학에 기초한다는 뜻이다. 컴퓨터는 어떠한 양적인 것을 더하고 빼는 등의 연산을 처리하는 장치라는 말이다. 많은 사람들이 '컴퓨터', '코딩' 이라는 단어를 들으면, 아래와 같은 이미지를 떠올리곤 한다. 조금 난해하긴 하지만, 사실 이것이 코딩의 본질이다. 컴퓨터는 0과 1을, 즉 어떤 양적인 것을 더하거나 빼면서(사실 모든 연산은 일련의 복잡한 사칙연산이므로) 프로그래머가 원하는 결과를 출력하는 기계장치이다.(이를 기계적으로 구현한 것이다) 따라서 그 외의 것은 할 수 없다. 예를 들어서, '인간의 감정'과 같은 것은 다룰 수 없다.(함수가 아닌 것) 따라서 가장 처음에 다루는 것이 변수와 출력함수이다. 아픙로 가장 많이 사용하게 될 ..