[Python/프로그래머스/Level2/KAKAO] k진수에서 소수 개수 구하기
Develop/Algorithm 2022. 3. 6. 14:44

문제 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소수 오른쪽에만 0이 있고 왼쪽에는 아무것도 없는 경우 0P처럼 소수 왼쪽에만 0이 있고 오른쪽에는 아무것도 없는 경우 P처럼 소수 양쪽에 아무것도 없는 경우 단, P는 각 자릿수에 0을 포함하지 않는 소수입니다. 예를 들어, 101은 P가 될 수 없습니다. 예를 들어, 437674을 3진수로 바꾸면 211020101011입니다. 여기서 찾을 수 있는 조건에 맞는 소수는 왼쪽부터 순서대로 211, 2, 11이 있으며, 총 3개입니다. (211, 2, 11을 k진법으로 보았을 때가 아닌, 10진법으로..

[Python/프로그래머스/Level1/KAKAO] 신고 결과 받기
Develop/Algorithm 2022. 3. 4. 17:21

문제 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다. 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다. 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다. k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다. 유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다. 이용자의 ID가 담긴 문자열 배열 id_list, 각 이용자가 신고한 이용자의 ID 정보가 담긴 문자열 배열..

[Python/프로그래머스/월간 코드 챌린지 시즌2] 괄호 회전하기
Develop/Algorithm 2021. 5. 9. 20:00

문제 다음 규칙을 지키는 문자열을 올바른 괄호 문자열이라고 정의합니다. (), [], {} 는 모두 올바른 괄호 문자열입니다. 만약 A가 올바른 괄호 문자열이라면, (A), [A], {A} 도 올바른 괄호 문자열입니다. 예를 들어, [] 가 올바른 괄호 문자열이므로, ([]) 도 올바른 괄호 문자열입니다. 만약 A, B가 올바른 괄호 문자열이라면, AB 도 올바른 괄호 문자열입니다. 예를 들어, {} 와 ([]) 가 올바른 괄호 문자열이므로, {}([]) 도 올바른 괄호 문자열입니다. 대괄호, 중괄호, 그리고 소괄호로 이루어진 문자열 s가 매개변수로 주어집니다. 이 s를 왼쪽으로 x (0 ≤ x < (s의 길이)) 칸만큼 회전시켰을 때 s가 올바른 괄호 문자열이 되게 하는 x의 개수를 return 하도록..

[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..

[MacOS] 맥 Python 버전 변경하기 (Change default python version on MacOS)
Just/끄 적 2021. 2. 26. 23:42

간단하게 맥북에서 파이썬 버전 바꾸는 방법 공유합니다 🤗 맥의 Terminal 에서 진행합니다! 터미널을 열고 밑에 나오는 명령어를 차례로 입력해주세요! homebrew를 이용해 Python 설치하기 brew install python 가장 최신 버전의 Python이 설치됩니다. 설치된 위치를 확인하기 ls -l /usr/local/bin/python* 그러면 이런 식으로 어디에 어떤 python이 설치되어 있는지 나오게 됩니다. 이제 여기서 하나를 골라서 어떤 버전으로 사용할지 결정해주면 됩니다. 파이썬 버전 변경하기 ln -s -f /usr/local/bin/python3.9 /usr/local/bin/python 여기서 만약 버전 3.7로 바꾸고 싶다면 python3.7로, 버전 3으로 바꾸고싶다면..

[Python/프로그래머스/Level3] 최고의 집합
Develop/Algorithm 2021. 2. 23. 17:03

문제 자연수 n 개로 이루어진 중복 집합(multi set, 편의상 이후에는 집합으로 통칭) 중에 다음 두 조건을 만족하는 집합을 최고의 집합이라고 합니다. 각 원소의 합이 S가 되는 수의 집합 위 조건을 만족하면서 각 원소의 곱 이 최대가 되는 집합 예를 들어서 자연수 2개로 이루어진 집합 중 합이 9가 되는 집합은 다음과 같이 4개가 있습니다. { 1, 8 }, { 2, 7 }, { 3, 6 }, { 4, 5 } 그중 각 원소의 곱이 최대인 { 4, 5 }가 최고의 집합입니다. 집합의 원소의 개수 n과 모든 원소들의 합 s가 매개변수로 주어질 때, 최고의 집합을 return 하는 solution 함수를 완성해주세요. 제한사항 최고의 집합은 오름차순으로 정렬된 1차원 배열(list, vector) 로 ..