[순위] 수의 크고 작음을 이용해 수의 순서를 정하는 것을 순위라고 한다. for문을 두번 돌리면 된다. 하나의 숫자에 대해 나머지 숫자들과 전부 비교하여 순위를 구하고 이를 모든 숫자에 대해 마찬가지로 반복한다. import random numbers = random.sample(range(50,101),20) rank = [0 for _ in range(20)] for idx,num1 in enumerate(numbers): for num2 in numbers: if num1 < num2 : rank[idx] += 1 print(f'numbers : {numbers}') print(f'rank : {rank}') for idx, num in enumerate(numbers): print(f'num :..
알고리즘
[binary search] 정렬되어 있는 자료구조에서 중앙값의 크고 작음을 이용해서 데이터를 검색한다. 정렬되어 있지 않은 자료구조라면 먼저 정렬을 시켜 주어야 이진 탐색이 가능하다. 중앙값을 기준으로 검색 범위를 점차 좁혀나가는 방식이다. 다음과 같은 자료구조가 있다고 하자. [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ] 이때 중앙값은 5 이다. 우리가 찾으려는 값을 2라고 한다면, 5보다 큰 값을 굳이 검색할 필요는 없을 것이다. [ 1, 2, 3, 4, 5 ] 여기서의 중앙값은 3이다. 따라서 4, 5는 필요가 없으므로 버려지게 된다. [ 1, 2, 3 ] 중앙값은 2 이다. 바로 내가 찾으려는 값이다. 반복문을 사용한 이진탐색 예시 코드 참조; 나동빈 (2020). . 서울시: 한빛미디어..
[선형 검색] 선형으로 나열되어 있는 데이터를 순차적으로 스캔하면서 원하는 값을 찾는다. 검색 성공 : 인덱스 반환 검색 실패 : -1 반환 datas = [3,2,5,7,9,1,0,8,6,4] print(f'datas:{datas}') print(f'len : {len(datas)}') searchData = int(input('찾으려는 숫자 입력 : ')) searchResultIdx = -1 n=0 while True: if datas[n] == searchData: searchResultIdx = n # 값을 찾으면 넣어준 뒤 break break n += 1 if n == len(datas): # 끝까지 찾았는데 안보이면 break break print(f'찾는 값의 인덱스는 {searchRes..