본문 바로가기

코딩41

[비교] 최댓값, 최솟값 알고리즘 1. 최댓값 자료구조에서 가장 큰 값을 찾는다. nums = [-2, -4, 5, 7, 10, 0, 8, 20, -11] 일 때, maxNum = nums[0] 으로 맨 첫번째에 있는 숫자를 넣어준다. 그 후, 그 다음 숫자들과 maxNum을 비교한다 maxNum < nums[1], nums[2], nums[3], ..., nums[n] class MaxAlgorithm: #class니까 init method가 있어야하고 자료구조 ns가 있어야함 def __init__(self, ns): self.nums = ns self.maxNum = 0 def getMaxNum(self): self.maxNum = self.nums[0] for n in self.nums: #만약 for문을 돌면서 이 maxNum보.. 2023. 2. 6.
Python 얕은 복사, 깊은 복사 대체로 해당변수를 그대로 가져와 쓰다보면, 얕은 복사가 되어 원래 변수에 영향을 미치게 된다. 이러한 상황을 방지하기 위해 같은 내용의 새로운 주소값을 갖는 변수를 만들게 되는데, 이 때 깊은 복사를 사용한다. 깊은 복사는 python에서는 copy 모듈의 deepcopy 함수를 통해 사용할 수 있다. import copy j = copy.deepcopy(i) 이렇게 하면 기존의 i라는 변수를 깊은 복사한 j라는 새로운 변수를 만들어낸 것이 된다. 2023. 2. 6.
[정렬] 선택정렬 알고리즘 주어진 리스트 중에 최소값을 찾아, 그 값을 맨 앞에 위치한 값과 교체하는 방식으로 자료를 정렬하는 알고리즘 nums = [4, 2, 5, 1, 3] #4부터 1까지 가서 그 다음 숫자와 비교할거임 for i in range(len(nums)-1): minIdx = i #i이후의 숫자부터 맨끝까지 for j in range(i+1, len(nums)): #앞에 있는 숫자가 더 크면 if nums[minIdx] > nums[j]: #작은 숫자를 뒤에 있는 숫자로 지정하고 minIdx = j #자리를 바꿔줄거임 tempNum = nums[i] nums[i] = nums[minIdx] nums[minIdx] = tempNum print(f'nums : {nums}') nums : [1, 2, 5, 4, 3] .. 2023. 1. 31.
[정렬] 삽입정렬 알고리즘 정렬되어 있는 자료 배열과 비교해서, 정렬 위치를 찾는다. [5, 10, 2, 1, 0] -> 리스트 앞의 5, 10이 정렬되어있으므로 2를 5, 10 앞으로 가져온다 [2, 5, 10, 1, 0] -> 2, 5, 10이 정렬되어 있으므로 1을 2앞으로 가져온다 [1, 2, 5, 10, 0] -> 1, 2, 5, 10이 정렬되어 있으므로 0을 1앞으로 가져온다 [0, 1, 2, 5, 10] ascending nums = [5, 10, 2, 1, 0] for i in range(1, len(nums)): j = i - 1 val = nums[i] while nums[j] > val and j >= 0: nums[j+1] = nums[j] j -= 1 nums[j+1] = val print(f'nums : .. 2023. 1. 31.
728x90