목록전체 글 (305)
RUBY
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cISenO/btrXcd14qCE/fuyeKLY05BCkfFwj7Ig7xk/img.gif)
삽입 정렬 삽입 정렬(Insertion Sort) 삽입 정렬은 두 번째 인덱스부터 시작합니다. 해당 인덱스(key 값) 앞에 있는 데이터부터 비교해서, key 값이 더 작으면 그 데이터 값을 뒤 인덱스로 복사한다 이를 key 값이 더 큰 데이터를 만날 때까지 반복하고 그리고 큰 데이터를 만난 위치 바로 뒤에 key 값을 이동 즉 n번째 인자를 그 이전의 인자와 비교를 하고 순서를 바꿈으로써 순서를 맞추는 것이 삽입 정렬의 기본 원리이자 핵심이다. 정렬되어 있는 자료 배열과 비교해서, 정렬 위치를 찾는다 nums = [5, 10, 2, 1, 0] for i1 in range(1, len(nums)): i2 = i1 - 1 cNum = nums[i1] while nums[i2] > cNum and i2 >=..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/NUZk7/btrW9o4KB1L/tYHkAhfGYAkiH0KUzCBvMK/img.gif)
버블 정렬 버블 정렬(Bubble Sort) 버블정렬이란 두 인접한 데이터를 비교해서, 앞에 있는 데이터가 뒤에 있는 데이터보다 크면, 자리를 바꾸는 정렬 알고리즘을 말한다. 물론 정렬의 원칙에 따라서는 버블정렬을 내림차순으로 구현할 수도 있고, 오름차순으로 구현할 수도 있다. 버블정렬(Bubble Sort) 알고리즘 원리 앞뒤에 데이터를 계속 비교해서 데이터를 정리한다는 버블 정렬의 개념은 이해하기 편하다. 그러나 실제로 코드로 구현할 때는 막힐 수도 있다. 따라서 버블정렬의 예시를 통해 실제 어떤 원리를 통해서 정렬이 되는지 알아보고자 한다. 적용 횟수 데이터의 형태 교환이 발생 여부 총 교환 횟수 원본 데이터 1, 9, 3, 2 0회 0회 1회 버블 정렬 로직 적용 1, 3, 2, 9 2회 2회 2..
순위 수의 크고 작음을 이용해서 수의 순서를 정하는 것을 순위라고 한다. rank 함수는 주어진 값들을 이용하여 작은 값부터 1등이라고 순위를 매긴다. method: 중복된 값이 있을 때 랭킹을 어떻게 매길지를 지정한다. 예를 들어 배열 [5, 6, 6, 6, 7]에 대해 [1, 2, 3, 4, 5]라고 순위를 매긴다고 할 때, 중복된 값들의 순위를 묶어(여기에서는 [2, 3, 4]) 그룹) average: (default) 그룹의 평균으로 순위를 부여 -> [1, 3, 3, 3, 5] min: 그룹의 최솟값으로 순위를 부여 -> [1, 2, 2, 2, 5] max: 그룹의 최댓값으로 순위를 부여 -> [1, 4, 4, 4, 5] first: 값이 나타난 순서대로 순위를 부여 -> [1, 2, 3, 4,..
이진 검색(탐색) Binary Search(이진 검색) 이진 탐색은 데이터가 정렬되어 있는 배열에서 찾고자 하는 수를 찾아내는 방법이다. 데이터가 정렬되어 있는 배열을 data라고 정하고 찾고자 하는 수를 target이라고 하자. 배열의 중간 인덱스를 mid로 정한다. 찾고자 하는 수(target)가 배열의 중간값(data[mid])보다 크다면 우측 데이터 대상으로, 찾고자 하는 수(target)가 배열의 중간값(data[mid])보다 작다면 좌측 데이터 대상으로 탐색을 한다. 찾고자 하는 수가 어디에 있냐에 따라 start와 end의 위치를 변경해준다. 이러한 방법을 반복하여 찾고자 하는 수를 찾을 때까지 반복해준다. 정리하면 이렇게 된다. → target : 찾고자 하는 값 → data : 오름차순으..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bSDgqr/btrW77gNufX/mEz6kirXR5Z8YZZw959lpK/img.png)
선형검색 선형 검색(Linear Search) 다른이름으로 순차 검색(Sequential Search) 이라고도 한다. 선형 검색은 데이터가 모인 집합(배열, 링크드리스트 등)의 처음부터 끝까지 하나씩 순서대로 비교하며 원하는 값을 찾아내는 알고리즘이다. → 순차적으로 검색 3 5 2 1 0 9 7 8 6 4 데이터를 정렬하거나 따로 건드릴 필요가 없고, 난이도가 쉬운 편이나, 데이터의 양이 많아지면 검색에 소요되는 시간도 비례하여 많아지고, 하나씩 일일이 비교하기 때문에 비효율적이라는 단점이 있다. 예를들어 위와 같은 데이터의 집합이 있을경우 4를 찾으려면 10번의 비교를 거쳐야 한다. 100만개의 데이터가 있고 찾고자 하는 데이터가 100만번째에 있다면 100만번의 비교를 해야 한다는 뜻이다. 이와 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/q6G4h/btrWZV87mRD/S2snVEFknrfqNoz5hkBHM0/img.png)
딕셔너리를 이용한 프로그래밍(파이썬) 과목별 점수를 딕셔너리에 저장하고 출력하는 프로그램을 만들어보자 subject = ['국어', '영어', '수학', '과학', '국사'] scores = {} for s in subject: score = input(s + ' 점수 입력: ') scores[s] = score print(f'과목별 점수 : {scores}') 국어 점수 입력: 88 영어 점수 입력: 89 수학 점수 입력: 69 과학 점수 입력: 54 국사 점수 입력: 35 과목별 점수 : {'국어': '88', '영어': '89', '수학': '69', '과학': '54', '국사': '35'} 사용자의 아이디, 비밀번호를 이용해서 로그인 프로그램을 만들어보자 members = {'urkpo':'09..
튜플을 이용한 프로그래밍(파이썬) 자주 접속하는 웹사이트 비번을 튜플에 저장해보자 passwds = ('password1234', 'abc123', 'qwerty', 'letmein', 'welcome00') print(f'passwds : {passwds}') passwds : ('password1234', 'abc123', 'qwerty', 'letmein', 'welcome00') 대학생 길동이의 1, 2, 3학년의 성적은 다음과 같다. 졸업할 때 4.0이상의 학점을 받기 위해 길동이가 받아야 하는 4학년 1, 2학기의 최소 학점을 구해보자 scores = ((3.7, 4.2), (2.9, 4.3), (4.1, 4.2)) total = 0 for s1 in scores: for s2 in s1: t..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cTPmVO/btrW56ILxHb/wCRnhBNKkhvfa4xiXFeunk/img.png)
리스트를 이용한 프로그래밍(파이썬) 1부터 사용자가 입력한 숫자까지의 약수와 소수를 리스트에 각각 저장하고, 이것을 출력하는 프로그램을 만들어보자 inputNum = int(input('1보다 큰 정수 입력: ')) listA = [] listB = [] for n in range(1, inputNum+1): if n == 1: listA.append(n) else: if inputNum % n == 0: listA.append(n) for number in range(2, inputNum+1): flag = True for n in range(2, number): if number % n == 0: flag = False break if flag: listB.append(number) print(f'{..