본문 바로가기

분류 전체보기

Programmers Level 1 최대공약수와 최소공배수 def gcdlcm(a, b): i=a while True: if a%i==0 and b%i==0: break i-=1 gcd = i lcm = int(a*b/gcd) return [gcd,lcm]# 아래는 테스트로 출력해 보기 위한 코드입니다.print(gcdlcm(3,12))
Programmers Level 1 피보나치 수 def fibonacci(num): a,b=0,1 for i in range(num): a,b=b,a+b return a# 아래는 테스트로 출력해 보기 위한 코드입니다.print(fibonacci(3))
Programmers Level 1 가운데 글자 가져오기 def string_middle(str): # 함수를 완성하세요 middle = len(str)//2 if len(str)%2 == 0: return str[middle-1]+str[middle] else: return str[middle] # 아래는 테스트로 출력해 보기 위한 코드입니다.print(string_middle("abcedd"))
Programmers Level 1 제일 작은 수 제거하기 #가장 작은 값의 인덱스를 찾아 deldef rm_small(mylist): # 함수를 완성하세요 a = sorted(mylist) del mylist[mylist.index(a[0])] return mylist # 아래는 테스트로 출력해 보기 위한 코드입니다.my_list = [4, 3, 2, 1]print("결과 {} ".format(rm_small(my_list)))my_list2 = [10, 8, 22]print("결과 {} ".format(rm_small(my_list2)))
타이젠 블루투스
종만북 분할 정복 병합 정렬과 퀵 정렬 - 동작 원리와 시간 복잡도 병합 정렬 알고리즘은 수열을 절반으로 나눠 두개의 수열을 재귀 호출로 정렬한다. 쪼개서 정렬한 뒤 정렬된 배열을 합친다.수열의 크기가 1이 될때까지 쪼개고 정렬한 다음 합친다. 절반으로 나누는 건 O(1), 병합은 O(n)1. 반씩 나눈다.2. 재귀 호출로 정렬한다.3. 합친다.반씩 나눌수록 문제의 수가 증가하지만 문제의 크기는 줄어 한 단계에서 모든 병합에 필요한 총 시간은 O(n)이다.크기가 n인 배열을 크기가 1인 원소가 될 때까지 반으로 나누다보면 O(lgn)이 되고, 각 단계에 원소 수는 n으로 일정하므로병합 정렬의 시간 복잡도는 O(nlgn)이 된다.퀵 정렬 알고리즘은 병합 과정이 필요없다. pivot을 정해서 이보다 작은 건 왼쪽, 큰 건 오른쪽에 배치한다.pivot을 만드려면 O(n)이 걸..
종만북 수열의 빠른 합 파이썬 재귀 함수의 순서에 대해 설명책에는 c++로 쓰여 있는데 파이썬으로 코드 작성을 했다.import sys print('정수 n 입력') n = int(sys.stdin.readline()) def fastSum(n): if n == 1: return 1; if n%2==1: #홀수일 경우 return fastSum(n-1) + n; return 2*fastSum(n/2) + (n/2)*(n/2) print(int(fastSum(n))); 맨 아래 있는 print문의 fastSum 함수가 호출된다. n=10이다.fastSum은 fS라고 줄이겠다.스택엔fS(1)fS(2)fS(4)fS(5)fS(10)이렇게 쌓여있다.맨 위에 fS(1)은 n=1이므로 return 1이 된다.이후 fS(2)는 2*fS(1) + 1..
크게 버리는 사람만이 크게 얻을 수 있다. 출처 https://www.youtube.com/watch?v=Tsj9GQWQXO8 옷 살 돈으로 암호화폐인 리플 등을 구매했다. 하락장이다. 공부에 집중도 잘 못하고 거래소에 방문해서 코인 가격을 들여다 보는 시간이 점점 늘어난다. 어차피 경험삼아 해보는 거였으니 존버해야지.