본문 바로가기

알고리즘

(138)
[알고리즘] 삽입정렬 (insertion sort) 삽입정렬이란? 두번째 인덱스부터 시작한다 key값 앞에 있는 데이터(front)부터 비교해서 key < front 이면, front값을 뒤 인덱스로 복사 key보다 작은 데이터를 만날때까지 반복, 작은 데이터를 만나면 바로 뒤에 key값을 이동 예 : data_list = [9, 3, 2, 5] 1번째 실행 : key=9, [9,3,2,5] 2번째 실행 : key=3, front=9, 자리바꿈 [3,9,2,5] 3번째 실행 : key=2, front=9, 자리바꿈 / key=2, front=3, 자리바꿈 [2,3,9,5] 4번째 실행 : key=5, front=9, 자리바꿈 3보다 5가 크므로 끝 [2,3,5,9] 알고리즘 구현 def insertion_sort(data): for index in ran..
[알고리즘] 버블정렬 (bubble sort) 버블정렬이란? 두개의 인접한 데이터를 비교해서 앞에 있는 데이터가 뒤에 있는 데이터보다 크면, 자리를 바꾼다 예 : data_list = [1, 9, 3, 2] 1차 로직 1, 9 비교 : 자리바꿈X [1,9,3,2] 9, 3 비교 : 자리바꿈O [1,3,9,2] 9, 2 비교 : 자리바꿈O [1,3,2,9] 2차 로직 1, 3 비교 : 자리바꿈X [1,3,2,9] 3, 2 비교 : 자리바꿈O [1,2,3,9] 3, 9 비교 : 자리바꿈X [1,2,3,9] 3차 로직 1, 2 비교 : 자리바꿈X [1,2,3,9] 2, 3 비교 : 자리바꿈X [1,2,3,9] 3, 9 비교 : 자리바꿈X [1,2,3,9] 알고리즘 구현 n개의 리스트가 있는 경우, 최대 n-1번의 로직 적용 로직이 경우에 따라 일찍 끝날수..
[알고리즘] 백준 2750 수 정렬하기 n = int(input()) input_list = [] sort = [] for _ in range(n): input_list.append(int(input())) for _ in range(n): sort.append(min(input_list)) input_list.remove(min(input_list)) for i in range(n): print(sort[i]) 크기없이 생성한 리스트는 = 연산으로 할당되지 않는다! append로 값 넣어주자 n = int(input()) array = list() for _ in range(n): array.append(int(input())) for i in range(n): min_index = i for j in range(i + 1, n): if a..
[알고리즘] 백준 1920 수찾기 n = int(input()) nn = set(map(int, input().split())) m = int(input()) mm = list(map(int, input().split())) for i in range(m): if mm[i] in nn: print('1') else: print('0') 더 최적화 시킨 코드 N, A = int(input()), {i:1 for i in map(int, input().split())} M = int(input()) for i in list(map(int, input().split())): print(A.get(i, 0)) 딕셔너리를 confrehension으로 만들기 for문으로 입력받기 get함수를 이용해 1 또는 0 출력
[알고리즘] 백준 10930 SHA-256 import hashlib data = input() en_data = data.encode() result = hashlib.sha256(en_data).hexdigest() print(result)
[알고리즘] 백준 5397 키로거 test_case = int(input()) for _ in range(test_case): stack1 = [] stack2 = [] str = input() for i in range(len(str)): if str[i] == '>': if stack2: stack1.append(stack2.pop()) elif str[i] == '
[알고리즘] 백준 1966 프린터큐 im_list #우선순위 입력 리스트 im_list2 #우선순위 입력 리스트 복사, max값 확인용 result #n의 크기만큼 초기화해놓고 인쇄순서 넣음 queue #index용 배열 test_case = int(input()) for _ in range(test_case): n, m = map(int, input().split(' ')) im_list = list(map(int, input().split(' '))) im_list2 = [] for i in im_list: im_list2.append(i) result = [0 for _ in range(n)] queue = [i for i in range(n)] count = 1 while queue: if im_list[queue[0]] == ma..
[알고리즘] 백준 1874 스택수열 n = int(input()) stack_list = list() pm_list = list() count = 1 for i in range(1,n+1): num = int(input()) while count