정렬 알고리즘 기본 (버블, 선택, 삽입정렬)
버블 정렬인접한 두 개를 비교해서, 교환한다.a= [-2, 45, 0, 11, -9]for step in range(len(a)-1): #...(1) for i in range(len(a)-1-step): #...(2) if a[i] > a[i+1]: a[i],a[i+1] = a[i+1],a[i] #...(3)시간 복잡도 (원소개수: n)(1) for 루프 n-1 번 반복(2) for 루프 n-1,n-2, ..., 2, 1번 반복(3) 교환은 상수 시간 작업=> T(n) = O(n^2) 한 번 회전했을 때, 요소들 중 가장 큰 값이 맨 뒤로 밀려나는 결과가 나온다.따라서 두번째 회전에서는 맨 뒤 요소를 제외하고 정렬을 수행하면 된다.이와 같은 원리로 세번째 회전에서는 맨 뒤-1, 맨..
2026. 4. 12.
Python으로 기초 수학 공식 구현하기 (직접 구현, 파이썬 라이브러리)
1. 최대공약수1) 직접 구현 : 유클리드 호제법def gdc(a,b): while b: a, b = b, a%b return(a) 2) 라이브러리 활용import mathgcd_val = math.gcd(a,b) 2. 최소공배수1) 직접 구현 : 최대공약수 이용def lcm(a,b): return (a*b) // gcd(a,b) 2) 라이브러리 활용import mathlcm_val = math.lcm(a,b) 3. 조합arr 배열에서 원소 개수가 r개인 조합 뽑기1) 직접 구현r= 2일 경우, 이중 for문으로 인덱스를 조정하면서 구할 수 있다.def combination(arr): for i in range(len(arr)): for j in range(i + 1, ..
2026. 3. 24.
[백준/골드5] 2011번: 암호코드
문제상근이와 선영이가 다른 사람들이 남매간의 대화를 듣는 것을 방지하기 위해서 대화를 서로 암호화 하기로 했다. 그래서 다음과 같은 대화를 했다.상근: 그냥 간단히 암호화 하자. A를 1이라고 하고, B는 2로, 그리고 Z는 26으로 하는거야.선영: 그럼 안돼. 만약, "BEAN"을 암호화하면 25114가 나오는데, 이걸 다시 글자로 바꾸는 방법은 여러 가지가 있어.상근: 그렇네. 25114를 다시 영어로 바꾸면, "BEAAD", "YAAD", "YAN", "YKD", "BEKD", "BEAN" 총 6가지가 나오는데, BEAN이 맞는 단어라는건 쉽게 알수 있잖아?선영: 예가 적절하지 않았네 ㅠㅠ 만약 내가 500자리 글자를 암호화 했다고 해봐. 그 때는 나올 수 있는 해석이 정말 많은데, 그걸 언제 다해..
2026. 3. 23.