시작하는 중
python 프로그래머스 - k진수에서 소수 개수 구하기 본문
https://school.programmers.co.kr/learn/courses/30/lessons/92335
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
진수 문제이다. 이 문제는 주어진 정수를 k진수로 변환하고 주어진 4개의 조건에 맞는 수를 구하는 문제이다.
정수를 k진수로 바꾸는 방법은
정수가 0보다 큰 동안, 정수를 k로 나눈 나머지를 문자열에 저장해두는 방식
change = ''
while n > 0:
change = str(n % k) + change
n //= k
조건들은 0을 기준으로 나누게 되면 구해지는 문제이다.
1. 0110은 0을 기준으로 나누면 ['', '11', '']이 된다.
이하의 조건들도 마찬가지!
풀이
1. 진수로 변환하고
2. 0을 기준으로 split를 한다.
3. split해서 나온 배열 순회하기!
4. 빈 배열인 경우는 제외하고, i가 1이면 의미 없으니 패스
5. i를 정수로 변환하고, 모든 소수는 제곱근까지만 탐색하면 되니 거기까지 탐색해준다.
6. 만약 두번째 반복문의 인덱스인 j로 i가 나누어 떨어지면 소수가 아니니 break
7. for - else를 통해서 break로 끝나지 않았다면 answer += 1
코드
def solution(n, k):
change = ''
while n > 0:
change = str(n % k) + change
n //= k
answer = 0
gogo = []
for i in change.split('0'):
if i and int(i) != 1:
i = int(i)
for j in range(2,int(i**0.5)+1):
if i % j == 0:
break
else:
answer += 1
return answer
'알고리즘 > 프로그래머스' 카테고리의 다른 글
Python 프로그래머스 - 주차 요금 계산 (0) | 2023.04.02 |
---|---|
Python 프로그래머스 - 무인도 여행 (0) | 2023.03.31 |
프로그래머스 - 택배 배달과 수거하기 (0) | 2023.03.05 |
프로그래머스 - 연속 부분 수열 합의 개수 (0) | 2023.02.28 |
프로그래머스 - 혼자서 하는 틱택토 (0) | 2023.02.24 |