목록전체 글 (305)
RUBY
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/l3bGm/btrXaqnQJui/VrO5tjqke3TF73FylTsWl1/img.png)
하노이의 탑 하노이의 탑 퍼즐 게임의 일종으로 세 개의 기둥을 이용해서 원판을 다른 기둥으로 옮기면 되고, 제약 조건은 다음과 같다. • 한 번에 한개의 원판만 옮길 수 있다. • 큰 원판이 작은 원판 위에 있어서는 안 된다. def moveDisc(discCnt, fromBar, toBar, viaBar): # 원판 개수, 출발 기둥, 도착 기둥, 경유 기둥 if discCnt == 1: print(f'{discCnt}disc: {fromBar}에서 {toBar}(으)로 이동!') else: moveDisc(discCnt-1, fromBar, viaBar, toBar) # (discCnt-1)개들을 경유 기둥으로 이동 print(f'{discCnt}disc: {fromBar}에서 {toBar}(으)로 ..
재귀 알고리즘 재귀 함수 호출한 함수 안에서 그 함수를 다시 호출(recursive call)함으로 반복하는 것을 의미한다. 쉽게 말하면 def를 통해 함수를 만든다. 그리고 만든 함수 안에서 다시 그 함수를 호출하는 것을 의미한다. 반복문 대신 재귀 함수를 이용한 예 def recusion(num): if num > 0: print('*' * num) return recusion(num - 1) else: return 1 recusion(10) ********** ********* ******** ******* ****** ***** **** *** ** * 재귀 함수를 이용한 팩토리얼 구하기 def factorial(num): if num > 0: return num * factorial(num - ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/CnC6k/btrW7VaNbo8/lEdBCorkkTQl5CR4z9ajok/img.png)
평균 평균 여러 수나 양의 중간값을 갖는 수를 평균이라고 한다 0~99까지의 수 중 30개의 랜덤 숫자의 평균 import random nums = random.sample(range(0, 100), 30) print(f'nums: {nums}') total = 0 for n in nums: total += n average = total / len(nums) print(f'average: {round(average, 2)}') 50이상 90이하 수들의 평균 import random nums = random.sample(range(0, 100), 30) print(f'nums: {nums}') targetNums = [] total = 0 for n in nums: if n >= 50 and n = se..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/eb0VFw/btrXbtqBDpf/Yud9YoOeK1phgYYwg8Ny31/img.png)
근삿값 근삿값 특정 값(참값)에 가장 가까운 값을 근삿값이라고 한다. import random nums = random.sample(range(0, 50), 20) print(f'nums: {nums}') inputNum = int(input('input number: ')) print(f'inputNum: {inputNum}') nearNum = 0 minNum = 50 for n in nums: absNum = abs(n - inputNum) # print(f'absNum: {absNum}') if absNum < minNum: minNum = absNum nearNum = n print(f'nearNum: {nearNum}') nums: [20, 3, 47, 30, 27, 21, 4, 31, 46,..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/drbgkA/btrXaCuOoag/Jnps17lGzP04kKRWGk1KEk/img.png)
최빈값 최빈값 데이터에서 빈도수가 가장 많은 데이터를 최빈값이라고 한다. class MaxAlgorithm: def __init__(self, ns): self.nums = ns self.maxNum = 0 self.maxNumIdx = 0 def setMaxIdxAndNum(self): self.maxNum = self.nums[0] self.maxNumIdx = 0 for i, n in enumerate(self.nums): if self.maxNum < n: self.maxNum = n self.maxNumIdx = i def getMaxNum(self): return self.maxNum; def getMaxNumIdx(self): return self.maxNumIdx; nums = [1, 3,..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/KOKnz/btrXaZ4mYFS/NG6raRL0zPDlkWxdpzgR21/img.png)
최솟값 최솟값 자료구조에서 가장 작은 값을 찾는다. class MinAlgorithm: def __init__(self, ns): self.nums = ns self.minNum = 0 def getMinNum(self): self.minNum = self.nums[0] for n in self.nums: if self.minNum > n: self.minNum = n return self.minNum ma = MinAlgorithm([-2, -4, 5, 7, 10, 0, 8, 20, -11]) minNum = ma.getMinNum() print(f'minNum: {minNum}') minNum: -11 리스트에서 아스키코드가 가장 작은 값을 찾는 알고리즘을 만들어보자 class MinAlgorithm..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/LjETl/btrXanxS0sn/6TmVU8C3q9JHWU01Uv1llk/img.png)
최댓값 최댓값 자료구조에서 가장 큰 값을 찾는다 class MaxAlgorithm: def __init__(self, ns): self.nums = ns self.maxNum = 0 def getMaxNum(self): self.maxNum = self.nums[0] for n in self.nums: if self.maxNum < n: self.maxNum = n return self.maxNum; ma = MaxAlgorithm([-2, -4, 5, 7, 10, 0, 8, 20, -11]) maxNum = ma.getMaxNum() print(f'maxNum: {maxNum}') maxNum: 20 리스트에서 아스키코드가 가장 큰 값을 찾는 알고리즘을 만들어보자 class MaxAlgorithm: d..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/HmRFJ/btrXanR8oUL/OPIVWeZU2udDOGGuog9xV0/img.gif)
선택 정렬(Selection Sort) 선택 정렬(Selection Sort) 주어진 데이터 중 최소값을 찾아서, 계속 맨앞으로 위치를 바꾸면서 순서를 바꾸는 방법 주어진 숫자 중 3이 가장 최소값이어서 자리를 바꾼다면 6과 자리를 바꾸게 된다. 이런식으로 하나하나 계속 비교하면서 자리를 찾아가는 방법이다. 1. 주어진 데이터 중, 최소값을 찾는다. 2. 최소값을 맨 앞으로 이동한다. 3. 맨 앞 데이터를 제외한 나머지 데이터들에게 동일한 반복을 시행한다. 주어진 리스트 중에 최소값을 찾아, 그 값을 맨 앞에 위치한 값과 교체하는 방식으로 자료를 정렬하는 알고리즘 nums = [4, 2, 5, 1, 3] for i in range(len(nums)-1): minIdx = i for j in range(i..