알고리즘 소수 구하기
·
파이썬/코딩테스트
소수의 판별: 기본적인 알고리즘 성능 분석 2부터 𝑋-1까지의 모든 자연수에 대하여 연산을 수행해야 한다 모든 수를 하나씩 확인한다는 점에서 시간 복잡도는 O(X) 이다 ​ 약수의 성질 모든 약수가 가운데 약수를 기준으로 곱셈 연산에 대해 대칭을 이루는 것을 알 수 있다 예를 들어 16의 약수는 1, 2, 4, 8, 16이다 이때 2 X 8 = 16은 8 X 2 = 16과 대칭이다 따라서 우리는 특정한 자연수의 모든 약수를 찾을 때 가운데 약수(제곱근)까지만 확인하면 된다 예를 들어 16이 2로 나누어떨어진다는 것은 8로도 나누어떨어진다는 것을 의미한다 소수의 판별: 개선된 알고리즘 (Python) import math # 소수 판별 함수 def is_prime_number(x): # 2부터 x의 제곱근..
[백준] 셀프넘버 구하기 - Python(파이썬)
·
파이썬/코딩테스트
# 백준 4673 셀프넘버 num = 1 # 리스트 10000개로 생성 result = []*10000 # 셀프넘버가 아닌값을 구하여 리스트에 담기 while(True): n_list = list(map(int, str(num))) sum = 0 for i in range(len(n_list)): if i == 0: sum = n_list[i] + num else: sum += n_list[i] num += 1 result.append(sum) if sum >= 10000: break result2 = []*10000 num2 = 1 # 1 - 10000 까지 숫자가 담긴 리스트 생성 for j in range(10000): result2.append(num2) num2 += 1 # 셀프넘버인 값을 구하..
[백준] 콘테스트 문제 - Python(파이썬)
·
파이썬/코딩테스트
정렬 알고리즘 문제로서 20개의 점수를 나열하여 10개씩 W대학 K대학 점수를 나눈뒤 상위 3명의 점수 합을 구하는 문제이다. ​ 파이썬으로 두개의 리스트에 값을 나눠서 넣고 정렬을 통해 상위 3개의 점수를 합산하여 출력하였다. # 콘테스트(백준 5576) 정렬문제 result1 = [] result2 = [] for i in range(20): n = input() if i < 10: result1.append(int(n)) else: result2.append(int(n)) result1.sort(reverse=True) result2.sort(reverse=True) sum1 = result1[0] + result1[1] + result1[2] sum2 = result2[0] + result2[1]..
[백준] ATM - Python(파이썬)
·
파이썬/코딩테스트
돈을 인출하는 순서에 따라 총 소요되는 시간이 얼마인가? ​ 소요되는 시간중 최소 시간을 얼마인지 구하는 정렬 알고리즘 문제이다. ​ 오름 차순을 하고 총합을 구하면 시간이 최소값이 되는걸 알수가 있다. ​ 그래서 아래와 같이 정렬후 걸리는 시간의 총합을 모두 더하였다. import sys n = int(sys.stdin.readline()) result = list(map(int, sys.stdin.readline().split())) result.sort() sum = 0 mid = 0 for i in result: mid += i sum += mid sys.stdout.write(str(sum)+'\n')
[백준] 수 정렬하기 2 - Python(파이썬)
·
파이썬/코딩테스트
백준의 수정렬하기와 동일한 문제지만 N의 개수가 1,000,000 개로 단순 input() 과 print()는 시간을 할당하는데 오래걸려 sys.StdIn, sys.StdOut system 언어를 사용하여 시간 단축을 하였다. import sys n = input() result = list() for i in range(int(n)): result.append(int(sys.stdin.readline())) result.sort() for i in result: sys.stdout.write(str(i)+'\n')
[백준] 수 정렬하기 - Python(파이썬)
·
파이썬/코딩테스트
# 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. n = input() result = list() for i in range(int(n)): result.append(int(input())) result.sort() for i in result: print(i)
삽입정렬 및 계수정렬 파이썬
·
파이썬/코딩테스트
삽입정렬의 경우 시간복잡도가 중첩이 두번돌아 n제곱이지만 정렬이 거의 되어있다는 가정이면 퀵정렬보다빠른 O(N)의 속도를 가질수도 있다. 그러므로 데이터를 잘보고 정렬알고리즘을 선택할 필요가 있다. # 삽입정렬은 선택정렬과 같은 시간 복잡도를 가졌지만 거의 정렬되어있는 상태라면 삽입정렬이 빠르다. array = list(map(int, input().split())) for i in range(1, len(array)): for j in range(i, 0, -1): if array[j] < array[j-1]: array[j], array[j-1] = array[j-1], array[j] else: break print(array) 계수정렬 # 계수정렬 모든 원소의 값이 0보다 크커나 같다고 가정 ar..
[코드업] 1등한 학생의 성적 - Python(파이썬)
·
파이썬/코딩테스트
리스트 형식으로 값을 받아 공백으로 각자 배열을 만들어주었다. 첫번째 성적의 1등인 사람의 리스트 인덱스를 구하였고 인덱스 위치에 있는 값이 성적마다 등수가 몇등인지 구하였다. index의 경우 0부터 시작이라 +1을 해주었다. n = int(input()) # 입력받을 값 result = [] # 이름을 입력받을 리스트 result1 = [] # 첫번째 성적 result2 = [] # 두번째 성적 result3 = [] # 세번째 성적 for i in range(n): data = list(map(str, input().split())) result.append(data[0]) result1.append(int(data[1])) result2.append(int(data[2])) result3.appe..
[코드업] 입체기동장치 구조체 연습 - Python(파이썬)
·
파이썬/코딩테스트
n개의 기동장치를 입력하여 출력 예시처럼 값을 출력시키는 구조체 문제이다. # 코드업 구조차 연습 # 입체기동장치 생상공장 n = int(input()) # 입력받을 값 result = [] # 입체기동장치 번호와, 가스 보유량 담을 리스트 for i in range(n): data = list(map(int, input().split())) result.append(data) result.sort() # 리스트 오름차순으로 정렬 for j in range(n): final = result[j] print(final[0], final[1])
[코드업] 수 나열하기 - Python(파이썬)
·
파이썬/코딩테스트
수열 1 ​ 어떤 규칙에 따라 수를 순서대로 나열한 것을 수열(sequences)이라고 한다. ​ 예를 들어 1 4 7 10 13 16 19 22 25 ... 은 1부터 시작해 이전에 만든 수에 3을 더해 다음 수를 만든 수열이다. 이러한 것을 수학에서는 앞뒤 수들의 차이가 같다고 하여 ​ 등차(차이가 같다의 한문 말) 수열이라고 한다. (등차수열 : arithmetic progression/sequence) 수열을 알게 된 영일이는 갑자기 궁금해졌다. ​ "그럼.... 123번째 나오는 수는 뭘까?" ​ 영일이는 프로그램을 만들어 더 큰 수도 자동으로 계산하고 싶어졌다. ​ 시작 값(a), 등차(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때 n번째 수를 출력하는 프로그램을 만들어보자. ​ 나는 ..
파이썬 백테스팅
·
파이썬/백테스팅
FinanceDataReader 를 통해 한국 거래소에 상장된 모든 종목 리스트를 가져와 보았다. ​ 한국거래소(KRX)에 상장된 주식종목 리스트와 코넥스(비상장)에 있는 주식종목 리스트: 'KRX', 'KOSPI', 'KODAQ', 'KONEX' 글로벌 주식종목 리스트: 'NASDAQ', 'NYSE', 'AMEX' and 'S&P500', 'SSE'(상해), 'SZSE'(심천), 'HKEX'(홍콩), 'TSE'(도쿄) 한국거래소의 상장폐지종목과 관리종목 리스트: 'KRX-DELISTING'(상장폐지종목), 'KRX-ADMINISTRATIVE' (관리종목) 한국, 미국, 일본의 ETF 리스트: 'KR', 'US', 'JP' 주가(KRX): '005930'(삼성전자), '091990'(셀트리온헬스케어) ...
대전집주인
'알고리즘' 태그의 글 목록 (3 Page)