알고리즘49 알고리즘 - 해시법(1) 이진 검색에 이어 해시법입니다. 해시법 해시법은 데이터를 저장할 위치를 간단하게 연산으로 구하는 방법입니다. 이 방법은 데이터의 검색뿐만 아니라 추가, 삭제도 효율적으로 할 수 있습니다. 배열에서 각각의 원소 값을 배열의 크기로 나누어 원소에 접근할 때 기준 값으로 합니다. 원소 값 5 6 20 31 37 53 78 해시값 (7로 나눔) 5 6 6 3 2 4 1 해시값을 배열의 인덱스로 생각하고 다시 만들어 보면 인덱스 0 1 2 3 4 5 6 원소 None 78 37 31 53 5 6 20 만약 숫자 21을 추가한다면 다른 원소들을 이동할 필요 없이 21을 7로 나눈 값인 0에 넣어주면 됩니다. 인덱스 0 1 2 3 4 5 6 원소 21 78 37 31 53 5 6 20 하지만 문제가 있습니다. 6번 .. 2020. 10. 26. 1일 N알고리즘 - #41 문제 https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 문제는 위 사이트를 참고해주세요. 풀이 N = int(input()) ptLst = [] for _ in range(N): x = list(map(int, input().split())) ptLst.append(x) ptLst.sort() for x in ptLst: for i in x: print(i, end=' ') print("") .. 2020. 6. 11. 1일 N알고리즘 - #40 문제 https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 문제는 위 사이트를 참고해주세요. 풀이 import sys N = int(input()) lst = [] dic = {} for i in range(N): x = int(sys.stdin.readline()) lst.append(x) if x in dic: dic[x] += 1 else: dic[x] = 1 lst.sort() temp = [] for i in dic: # 최빈값을 찾아 리스트에 넣음 if dic[i] == m.. 2020. 6. 9. 1일 N알고리즘 - #39 문제 https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제는 위 사이트를 참고해주세요. 풀이 import sys N = int(input()) lst = [0] * 100001 for i in range(N): x = int(sys.stdin.readline()) lst[x] = lst[x] + 1 for i in range(len(lst)): if lst[i] != 0: for j in range(lst[i]): print(i) 저번 글과 똑같이 풀었는데 이번.. 2020. 6. 9. 이전 1 2 3 4 5 6 ··· 13 다음