목록ALGORITHM (82)
정구리의 우주정복
programmers.co.kr/learn/courses/30/lessons/68644 코딩테스트 연습 - 두 개 뽑아서 더하기 programmers.co.kr 해설 numbers = [0,1] result = set([]) #print(result) for i in range(len(numbers)): for j in range(len(numbers)): if i == j : continue else: result.add(numbers[i]+numbers[j]) result = sorted(list(result)) print(result) ----주절주절 신청해놓고서 테스트를 안봤다 . . .세상에마상에나
www.acmicpc.net/problem/2775 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다. (1
www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M을 www.acmicpc.net 이분 탐색을 이용한 풀이 (pypy 로 제출해야지 정답처리가 됩니다) #나무 자르기 (pypy 로 해결시 해결됨) import sys n,m = map(int,sys.stdin.readline().split()) array = list(map(int,sys.stdin.readline().split())) start = 0 end = max(array) result = 0 ..
www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 이분탐색을 이용한 풀이 #랜선 자르기 k,m = map(int,input().split()) array = [] for _ in range(k): array.append(int(input())) start = 1 end = max(array) result = 0 while (start
https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1≤N≤100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1≤M≤100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안�� www.acmicpc.net 1. 이진 탐색으로 해결한 방법 def binary_search(array,target,start,end): while start target : end = mid -1 else: start = mid +1 return None n = int(input()) array = list(map(int,input().split())) array.sort() m..
이진 탐색은 반으로 쪼개가면서 탐색을 하는 방식이다 *내부의 데이터가 정렬되어야만 사용이 가능하다는 특징이 있음 시작 , 끝 , 중간 데이터가 있어야 한다 찾으려는 데이터와 중간점의 데이터를 비교하고 다시 시작 , 끝 , 중간 을 조절해주면서 범위를 좁혀가는 탐색 방법이다 0 2 4 6 8 10 12 14 16 18 중에서 4 를 찾고자 한다면 0 2 4 6 8 10 12 14 16 18 처음값 0 중간값 8 끝값 18 일때 찾으려는 4 보다 중간값인 8 이 더 크므로 더이상 8-16 까지의 데이터는 볼 필요가 없다 그리고 끝 값을 8의 하나 앞인 인 6으로 해주자 0 2 4 6 8 10 12 14 16 18 처음 값 0 중간값 2 끝값 6 일때 4는 중간값인 2보다 크므로 0-2 까지 의 데이터는 볼 ..
https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 카운팅 정렬을 사용해서 풀어야 하는 문제이당 카운팅 정렬은 "특정한 조건" 이 성립해야지 사용할 수 있는 정렬이다 #특별한 조건이란 ? 데이터의 크기 범위가 제한되어 정수 형태로 표현할 수 있을때 사용이 가능하다 이 문제의 경우에는 문제에 숫자의 범위가 10000까지 라고 정의되어있이 때문에 카운팅 정렬을 사용할 수 있다 시간 복잡도는 O(N+K) 로 아주아주 빠른 편 #count sort 를 이용해서 풀어보아용 ..
학생의 이름과 점수를 입력받았을때 점수가 낮은 순서대로 "이름" 을 출력하는 방법 ex) 2 홍길동 95 이순신 77 >> 이순신 홍길동 #성적이 낮은 순서로 학생 출력하기 n = int(input()) array = [] for _ in range(n): input_data = input().split() #!!! 학생 정보를 (점수,이름) 으로 묶어줄 수 있다 !!!! array.append((input_data[0],int(input_data[1]))) array = sorted(array,key = lambda array : array[1]) #[1] 기준으로 정렬 for student in array: print(student[0],end = ' ') array 에다가 (점수,이름) 의 형태로 ..