본문 바로가기

파이썬72

백준 - 1764번 문제 https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net 코드 import sys N, M = map(int, sys.stdin.readline().rstrip().split()) lst = [None] * N ans = [] for i in range(N): lst[i] = sys.stdin.readline().rstrip() lst.sort() for _ in range(M): key = sys.stdin.readline().rstrip() .. 2020. 11. 25.
백준 - 10610번 문제 https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 코드 N = input() lst = list(map(int, N)) total = sum(lst) if total % 3 == 0: lst.sort(reverse=True) if lst[-1] == 0: print(''.join(map(str, lst))) else: print(-1) else: print(-1) 2020. 11. 25.
백준 - 10815번 문제 https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 코드 import sys def com(a, b): for i in range(len(b)): key = b[i] pl = 0 pr = len(a) - 1 while True: pc = (pl + pr) // 2 if a[pc] == key: print(1, end=' ') break elif a[pc] < key: pl = pc + 1 else: pr = pc.. 2020. 11. 24.
알고리즘 - 셸 정렬 단순 삽입 정렬의 장점은 살리고 단점을 보완해, 더 빠르게 정렬하는 알고리즘을 셸 정렬이라고 합니다. 셸 정렬은 먼저 정렬할 배열의 원소를 그룹으로 나누어, 각 그룹별로 정렬을 수행합니다. 그리고 정렬된 그룹을 합치는 작업을 반복하여 원소의 이동 횟수를 줄이는 방법입니다. 위와 같이 8개의 원소를 갖는 배열이 있을 때, 단순 삽입 정렬은 1을 맨 앞으로 이동시킬 때 총 7번 이동시켜야 합니다. 셸 정렬을 하면 먼저 서로 4칸씩 떨어진 원소를 꺼내어 4개의 그룹으로 나누고 그룹별로 각각 정렬합니다. (8, 5), (4, 2), (9, 7), (6, 1) --> (5, 8), (2, 4), (7,9), (1, 6) 이렇게 4칸 떨어진 원소를 정렬하는 방법을 4-정렬이라고 합니다. 이어서 2칸 떨어진 원소를 .. 2020. 11. 24.