[Algorithm/Python] 파이썬 소수 찾기(Python Program to Check Prime Number using Sieve of Eratosthenes)
Develop/Algorithm 2021. 3. 5. 18:18

문제 1개 이상의 자연수가 들어있는 배열이 주어졌을 때, 소수의 개수 출력하기 풀이 완전탐색 이용하기 def getPrimeNum(n): if n == 1 : return False elif n == 2 : return True for i in range(2, n): if n % i == 0 : return False return True answer = 0 # arr 가 주어진 배열 for k in arr : if getPrimeNum(k) : answer += 1 print(answer) for 문을 이용해 배열의 원소를 차례대로 호출한다. 소수의 정의는 1과 그수 자신 이외의 자연수로는 나눌 수 없는, 1보다 큰 자연수(출처:위키백과) 이기 때문에 for 문을 통해 2부터 n-1까지 n을 나눠서 나..

[Algorithm/Python] 파이썬 최대공약수와 최소공배수 구하기 ( 유클리드 호제법 )
Develop/Algorithm 2021. 3. 5. 03:29

문제 n, m 두 개의 자연수가 주어졌을 때, 최대공약수와 최소공배수를 구하기 풀이 math 모듈의 gcd 함수 사용하기 from math import gcd def lcm(a,b) : return a*b // gcd(a,b) print(gcd(n,m), lcm(n,m)) math 모듈의 gcd 함수를 사용한다면 바로 최대공약수를 알아낼 수 있다. 최소공배수는 [ 두 수의 곱 / 두 수의 최대공약수 ] 로 표현할 수 있다. 최소공배수를 구하는 것에 대해 이해가 잘 가지않아서 예시를 들어서 표현해보겠다. 이때, 최소공배수는 2*3 = 6 , 최대공약수는 2*3*4*3 = 72 가 나오게 된다. 최대공약수의 식에서 뒤에 있는 4와 3에 집중해야 한다. 4가 나온 경로를 보면 24 / 2 / 3 의 과정이고 ..

[Algorithm/Python] 파이썬 2진수 변환 다양한 풀이 (Convert decimal to binary in python)
Develop/Algorithm 2021. 3. 4. 01:00

문제 양의 정수 n이 주어졌을 때, 이를 이진수로 변환하기 풀이 2진수 변환 함수 사용 ⭕️ binaryNum = format(n, 'b') return binaryNum format 이라는 함수를 이용한다. 'b' 는 2진수를 뜻한다. binaryNum = bin(n) return binaryNum[2:] bin 이라는 함수 이용한다면 'ob + 2진수 변환 수' 로 나오기 때문에 앞에 ob를 제거한 후 return 해준다. 2진수 변환 함수 사용 ❌ def getBinaryNum(n, lists): a, b = divmod(n, 2) lists.append(b) if a == 0 : return lists else : return getBinaryNum(a, lists) answerList = [] ..

[Algorithm/Python] 파이썬 약수 구하기 (시간복잡도 줄여보기)
Develop/Algorithm 2021. 3. 3. 18:16

문제 1 이상의 자연수 N이 주어졌을 때, N의 약수 구하기 풀이 단순한 풀이 방법 def getMyDivisor(n): divisorsList = [] for i in range(1, n + 1): if (n % i == 0) : divisorsList.append(i) return divisorsList for 문을 이용해 범위를 약수가 될 수 있는 최솟값인 1부터 최댓값인 자기 자신까지 돌려준다. 만약, 나머지가 0이라면 약수라는 뜻이므로 배열에 저장해준다. 이 방법을 사용할 경우 작은 수부터 i가 들어가므로 자동으로 오름차순 정렬이 된다. 시간 복잡도 : O(N) 더 효율적인 풀이 방법 def getMyDivisor(n): divisorsList = [] for i in range(1, int(n..