목록STUDY (96)
STUDY_SEONMIN
문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 출력 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. import sys N = int(sys.stdin.readline()) coordinates = [] for _ in range(N): x,y = map(int, sys.stdin.readline().split()) coordinates...
문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 출력 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. import sys N = int(sys.stdin.readline()) coordinates = [] for _ in range(N): x,y = map(int, sys.stdin.readline().split()) coordinates...
문제 배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자. 입력 첫째 줄에 정렬하고자하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. 출력 첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다. N = input() number = [] for n in N: number.append(int(n)) number.sort(reverse=True) for n in number: print(n,end='') 숫자의 각 자리수를 받는 얻는 방법은 문자열 데이터로 치환해 각 자리를 뽑아내는 방법이 있습니다. 이를 활용해 각 자리의 숫자를 뽑아내고 정렬하여 최종 결과를 출력합니다.
문제 수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자. 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. 출력 첫째 줄에는 산술평균을 출력한다. 소수점 이하 ..
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 카운팅정렬 - 각 숫자별로 등장 횟수를 카운팅해준 후 작은 숫자부터 카운팅 횟수만큼 출력하는 방법입니다. import sys N = int(input()) li = [0]*10001 for _ in range(N): a = int(sys.stdin.readline()) li[a] += 1 for j in range(1,10001): if li[j] >= 1: for _ in range(..
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 시간복잡도 O(nlogn)인 알고리즘으로 풀어보세요. 합병정렬 https://ko.wikipedia.org/wiki/%ED%95%A9%EB%B3%91_%EC%A0%95%EB%A0%AC 합병 정렬 - 위키백과, 우리 모두의 백과사전 합병 정렬 또는 병합 정렬(merge sort)은 O(n log n) 비교 기반 정렬 알고리즘이다. 일반적인 방법으로 구현했을 때 이 정렬은 안정 정렬에 속하며, 분할 정복 알고리즘의 하나이다. 존 폰 노이만이 1945 ko.wikipedia.org def merge_sort(arr): if len(arr)
SQL에서는 MIN, MAX, AVG와 같은 집계함수를 제공해주고 있지만 중앙값을 찾는 함수는 따로 존재하지 않습니다. 중앙값을 구하기 위해서 사용자 정의 변수를 사용하는 방법이 있습니다. NUMBER 6 2 3 8 이런 테이블(T)이 있다고 해보겠습니다. SET @ROWNUM:=-1; SELECT @ROWNUM:=@ROWNUM+1 AS RNUM, NUMBER FROM T ORDER BY NUMBER; 사용자 정의 변수의 초기값을 -1로 설정하고 쿼리를 실행하게 되면 RNUM NUMBER 0 2 1 3 2 6 3 8 이처럼 결과를 얻을 수 있습니다. 얻어진 테이블에서 중앙값을 찾는다고 하면 RNUM=1, RNUM=2에 해당하는 3,6의 평균값인 4.5가 될 것입니다. 현재 사용자 정의 변수인 @ROWNU..
N개의 수가 주어졌을 때 이를 오름차순으로 정렬하는 프로그램을 작성하시오. *시간복잡도가 O($n^2$)인 정렬 알고리즘 이용 : 선택, 거품, 삽입 정렬 1. 선택 정렬 https://ko.wikipedia.org/wiki/%EC%84%A0%ED%83%9D_%EC%A0%95%EB%A0%AC 선택 정렬 - 위키백과, 우리 모두의 백과사전 선택 정렬(選擇整列, selection sort)은 제자리 정렬 알고리즘의 하나로, 다음과 같은 순서로 이루어진다. 주어진 리스트 중에 최소값을 찾는다. 그 값을 맨 앞에 위치한 값과 교체한다(패스(pass)). 맨 ko.wikipedia.org N = int(input()) numbers = [int(input()) for _ in range(N)] for i in r..
종말의 숫자란 어떤 수에 6이 적어도 3개이상 연속으로 들어가는 수를 말한다. 제일 작은 종말의 숫자는 666이고, 그 다음으로 큰 수는 1666, 2666, 3666, .... 과 같다. 따라서, 숌은 첫 번째 영화의 제목은 세상의 종말 666, 두 번째 영화의 제목은 세상의 종말 1666 이렇게 이름을 지을 것이다. 일반화해서 생각하면, N번째 영화의 제목은 세상의 종말 (N번째로 작은 종말의 숫자) 와 같다. 숌이 만든 N번째 영화의 제목에 들어간 숫자를 출력하는 프로그램을 작성하시오. 숌은 이 시리즈를 항상 차례대로 만들고, 다른 영화는 만들지 않는다. N = int(input()) num = 666 cnt = 1 while True: if cnt == N: print(num) break num ..
차원축소란? 국어 수학 90 80 80 90 70 80 이런 과목별 성적 데이터가 있을 때 두 성적을 결합해 "종합 성적"을 만들고자 합니다. 이 때 우리는 단순히 두 과목에 평균을 종합 성적으로 사용할 수도, 또는 수학이 난이도가 어려웠으니 수학에 비중을 더 주는 방식으로 종합 성적을 만들 수도 있습니다. 1) 종합 성적 => 평균 종합 성적 = 국어 x 0.5 + 수학 x 0.5 2) 종합 성적 => 수학 비중 높게 종합 성적 = 국어 x 0.4 + 수학 x 0.6 이를 선형대수의 관점에서 보면 "종합 성적"이라는 벡터는 "국어"벡터와 "수학"벡터의 선형결합이 되며 국어, 수학으로 이루어져있던 2차원 Feature Vector가 종합 성적 하나로 이루어진 1차원 Feature Vector가 되는 것입..