목록알고리즘/백준 (14)
개발자 블로그
문제 보기 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 나의 풀이 - 병합정렬 O(nlogn) # 정렬이 된 두 배열을 합치면서 정렬시키는 함수 def merge(array1, array2): result = [] array1_index = 0 array2_index = 0 while array1_index < len(array1) and array2_index < len(array2): if array1[array1_index] < array2[array2_index]: result.appen..
문제 보기 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 나의 풀이 n = list(input()) n.sort(reverse=True) if int(n[-1]): print(-1) else: s = sum([int(n[i]) for i in range(len(n))]) if s % 3: print(-1) else: print(''.join(n)) 3의 배수의 특징을 알면 풀이가 쉽다... 각 자리 수의 합이 3의 배수이라는 특징을 활용하자. 1) 그 중 가장 큰 수를 구하기 위해 정렬 메소드를 사용. 2) 문..
문제 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 나의 풀이 # 투포인터 한개는 left 나의 위치, right는 나보다 작은 노드의 위치 # right 노드와의 거리까지 주유를 한다. # right가 left의 가격을 비교하고 더 작은 값이 나올 때 까지 이동 n = int(input()) distance_lst = list(map(int, input().split())) price_lst = list(map(int, input().split())) answer = 0 left = 0 rig..
문제 링크 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 나의 풀이 n = int(input()) meeting_times = [tuple(map(int, input().split())) for _ in range(n)] meeting_times.sort(key=lambda x: (x[1], x[0])) stack = [meeting_times[0]] for i in meeting_times[1:]: if i[0] >= stack[-1][1]: stack.append(i) print(len(stack)) 1) 입력값을 튜플형태로 리스트로 받는다. 2) 우선순위 정렬을 끝나는 시간 -> 시작하는 시간 순으로 정렬 * 정렬을 ..