목록정렬 (5)
minimimi
문제출처] https://www.acmicpc.net/problem/8979 문제요약 sort() 함수를 이용한 정렬 문제 풀이 리스트에서 사용할 수 있는 sort() 함수에서 key= 파라미터를 활용하면 된다. 금메달이 같은 경우 은메달의 개수로 정렬하고 은메달이 같은 경우 동메달로 정렬하면 된다. case = [[0 for _ in range(4)] for _ in range(n)] for _ in range(n): country, gold, silver, bronze = map(int,input().split()) case[country-1] = [country,gold,silver,bronze] case.sort(key=lambda x:(x[1],x[2],x[3]), reverse=True)테스트..
문제출처] https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 문제요약 좌표의 순위를 입력받은 순서대로 출력 풀이 소스코드는 Python 3으로 작성되었습니다. import sys input = sys.stdin.readline n = int(input()) list_dots = [] # 인덱스를 저당하는 리스트를 만든다. for i in range(n): list_dots.append([i,0])..
문제출처] https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 문제요약 산술평균, 중앙값, 최빈값, 범위를 구하는 문제 풀이 산술평균 소수점 이하 첫 째 자리에서 반올림하기 위해 round() 를 이용한다. average = int(round((sum(datas)/n))) round(number,n)은 소수점 n번 째 자리까지 반올림을 수행한다. 중앙값 데이터를 정렬한 후 데이터의 길이 ÷ 2 를 인덱스로 하는 값을 갖는다. datas.sort() center ..
문제출처] https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 문제요약 시간 제한과 메모리 제한이 있어 Counting Sort를 이용해 정렬을 수행하는 문제 풀이 카운팅 정렬(계수 정렬)은 데이터 셋이 특정한 범위로 제한되어 있을 때 속도를 높일 수 있는 정렬 방식이다. 데이터를 인덱스로 가지는 배열에 카운트를 1씩 증가시키는 방식으로 정렬이 수행된다. input() 을 이용할 때보다 sys.stdin.readline() 을 이용할 때 수행 속도가 향상된다. 소스코..
문제출처] https://www.acmicpc.net/problem/11650 11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 문제요약 2차원 배열 정렬하기 풀이 배열 정렬을 위해 sort() 함수를 사용한다. table.sort(key = lambda x: (x[0], x[1])) key 값에 lambda 식을 준다. 0번째 인덱스를 기준으로 먼저 정렬을 수행한 후, 1번째 인덱스를 기준으로 정렬을 수행한다. 소스코드는 Python 3으로 작성되었습니다. ..