목록Computer Science/Algorithm (244)
DHistory
문제 5800번: 성적 통계 첫째 줄에 중덕 고등학교에 있는 반의 수 K (1 ≤ K ≤ 100)가 주어진다. 다음 K개 줄에는 각 반의 학생수 N (2 ≤ N ≤ 50)과 각 학생의 수학 성적이 주어진다. 시험 성적은 0보다 크거나 같고, 100보다 www.acmicpc.net 풀이 import sys k = int(sys.stdin.readline().rstrip()) classes = [] for _ in range(k): classes.append(list(map(int, sys.stdin.readline().rstrip().split()))) def solution(classes): for index, value in enumerate(classes): value = sorted(value[1:..
문제 11931번: 수 정렬하기 4 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 풀이 import sys n = int(sys.stdin.readline().rstrip()) numbers = [] for _ in range(n): number = int(sys.stdin.readline().rstrip()) numbers.append(number) def solution(numbers): return sorted(numbers, reverse=True) print(*solution(numbers), sep='\n') 채..
문제 8979번: 올림픽 입력의 첫 줄은 국가의 수 N(1 ≤ N ≤ 1,000)과 등수를 알고 싶은 국가 K(1 ≤ K ≤ N)가 빈칸을 사이에 두고 주어진다. 각 국가는 1부터 N 사이의 정수로 표현된다. 이후 N개의 각 줄에는 차례대로 각 www.acmicpc.net 풀이 import sys n, k = map(int, sys.stdin.readline().rstrip().split()) scores = [] for _ in range(n): no, g, s, b = map(int, sys.stdin.readline().rstrip().split()) scores.append([no, g, s, b]) def solution(scores, k): ranks = [0] * n rank = 1 scor..
문제 11728번: 배열 합치기 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거 www.acmicpc.net 풀이 import sys n, m = map(int, sys.stdin.readline().rstrip().split()) a = list(map(int, sys.stdin.readline().rstrip().split()))[:n] b = list(map(int, sys.stdin.readline().rstrip().split()))[:m] def solution(a, b): return sorted(a + b) prin..
문제 11004번: K번째 수 수 N개 A1, A2, ..., AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 풀이 import sys n, k = map(int, sys.stdin.readline().rstrip().split()) numbers = list(map(int, sys.stdin.readline().rstrip().split()))[:n] def solution(numbers, k): return sorted(numbers)[k - 1] print(solution(numbers, k)) 채점 결과
문제 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 풀이 """ N개의 카드를 가지고 있다. 정수 M개가 주어졌을 때, 숫자 카드를 상근이가 가지고 있는지 아닌지 구하는 프로그램을 작성하시오. N: 카드의 개수 (1
문제 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 풀이 import sys n = int(sys.stdin.readline().rstrip()) people = [] for i in range(n): age, name = sys.stdin.readline().rstrip().split() people.append([int(age), name, i]) def solution(people): return sorted(people, key=lambda x: (x[0], x[2])) for age, name, _ in ..
문제 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 풀이 import sys n = int(sys.stdin.readline().rstrip()) coordinates = [] for _ in range(n): x, y = map(int, sys.stdin.readline().rstrip().split()) coordinates.append((x, y)) def solution(coordinates): return sorted(coordinates, key..
문제 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 풀이 import sys n = int(sys.stdin.readline().rstrip()) text = [] for _ in range(n): text.append(sys.stdin.readline().rstrip()) def solution(text): return sorted(set(text), key=lambda x: (len(x), x)) print(*solution(text), sep='\n') 채점 결과
문제 2751번: 수 정렬하기 2 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 풀이 """ 주의사항) "절댓값"이 1,000,000보다 작거나 같은 정수 -1,000,000 ~ 1,000,000 """ import sys n = int(sys.stdin.readline().rstrip()) numbers = [0] * (2000001 + 1) for _ in range(n): number = int(sys.stdin.readline().rstrip()) numbers[number + 1000000] += 1 def solu..