Python - 알고리즘 (하노이 탑)
·
IT/Python
하노이 탑하노이라길래 베트남인줄 알았는데 고대 인도 베나레스에 있는 한 사원 이야기란다.64개의 원반을 처음 놓여 있던 막대에서 다른 막대로 모두 옮기면 탑은 무너지고 세상의 종말이 온다고 한다.세상을 종말 시켜보자.하노이 탑의 규칙은 아래와 같다.한 번에 하나의 원판만 이동할 수 있습니다.원판은 탑의 맨 위에서만 이동할 수 있습니다.작은 원판 위에 큰 원판이 올라갈 수 없습니다.이를 풀기위한 기본 아이디어는 재귀적 접근 방식즉 큰 문제를 더 작은 문제로 나누어 해결뭔말이냐?-> n-1개의 원핀을 사용해 문제를 해결한 다음 가장 큰 원판을 도착지점으로 이동그리고 다시 n-1개의 원판을 가장 큰 원판 위로 이동시키는 과정을 반복하는 것하노이의 탑을 풀기 위해서 우선 재귀함수에 대해서 알아야함재귀함수란 함수..
Python - 알고리즘 (최댓값,최솟값,최빈값,근삿값,평균)
·
IT/Python
최대값자료구조에서 가장 큰 값을 찾는다.class MaxAlgorithm: def __init__(self, ns): # ns: 주어진 숫자 배열 self.nums = ns # 주어진 숫자 배열을 인스턴스 변수 nums에 저장ㅇㅇ self.maxNum = 0 # 최대값을 저장할 변수를 초기화 def getMaxNum(self): self.maxNum = self.nums[0] # maxNum을 배열의 첫 번째 요소로 초기화 # 배열을 순회하면서 최대값을 찾음 for n in self.nums: if self.maxNum 실습리스트에서 아스키코드가 가장 큰 값을 찾는 알고리즘class maxAlg..
Python - 알고리즘 (버블정렬,삽입정렬,선택정렬)
·
IT/Python
버블정렬처음부터 끝까지 인접하는 인덱스의 값을 순차적으로 비교하면서큰 숫자를 가장 끝으로 옮기는 알고리즘이다.nums = [10, 2, 7, 21, 0]을 순서대로 정렬하는 문제nums = [10, 2, 7, 21, 0]print(f'not sorted nums : {nums}')length = len(nums) -1 # 마지막 index를 얻기 위해for i in range(length): for j in range(length - i): # 이미 정렬된 부분은 다시 검사할 필요 x , -i를 통해 이미 정렬된 끝 부분 제외 if nums[j] > nums[j+1]: #앞뒤 비교하고 nums[j], nums[j+1] = nums[j+1],nums[j] # 자리 바..
Python - 알고리즘 (순위)
·
IT/Python
순위란?수의 크고 작음을 이용해서 수의 순서를 정하는 것을 순위라고 한다.50~100가지의 수 중 랜덤으로 20개뽑고 그 안에서 순위 정하는거import randomnums = random.sample(range(50,101), 20)ranks = [ 0 for i in range(20)] # 0, 20개 만들기print(f'nums: {nums}')print(f'ranks: {ranks}')for idx, num1 in enumerate(nums): # nums 리스트의 각 요소(num1)와 그 인덱스(idx)를 순회 for num2 in nums: # nums 리스트의 모든 요소(num2)를 다시 순회 if num1 결과실습학급 학생 (20명)들의 중간고사와 기말고사 성적을 이용해서..