코테 준비/프로그래머스

[level 2] k진수에서 소수 개수 구하기

쿠쿠*_* 2023. 5. 14. 13:26

https://school.programmers.co.kr/learn/courses/30/lessons/92335

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

이 문제를 풀기 위해선 우선 아래와 같이 n진수를 구하는 방법부터 알아야 한다.

def solution(n, q):
    rev_base = ''

    while n > 0:
        n, mod = divmod(n, q)
        rev_base += str(mod)

    return rev_base[::-1] 
    # 역순인 진수를 뒤집어 줘야 원래 변환 하고자하는 base가 출력
    
print(solution(45, 3))

https://velog.io/@code_angler/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%A7%84%EC%88%98%EB%B3%80%ED%99%982%EC%A7%84%EB%B2%95-3%EC%A7%84%EB%B2%95-5%EC%A7%84%EB%B2%95-10%EC%A7%84%EB%B2%95n%EC%A7%84%EB%B2%95

 

파이썬 진수변환(2진법, 3진법, 5진법, 10진법)[n진법]

python에서는 기본적으로 int() 라는 함수를 지원한다int(string, base)2051104185276710진수로 변경이 가능하다.2, 8, 16진수는 bin(), oct(), hex() 함수를 지원한다.0b10110o130xb0b는 2진수, 0o는 8진수,

velog.io

https://kwanghori.tistory.com/15

 

[Python]기수 변환하기(n진수 구하기)

정숫값을 임의의 기수(n진법으로 표기되는 숫자)로 변환하는 알고리즘을 살펴보겠습니다. 10진수 정수를 n진수로 변환하려면 정수를 n으로 나눈 나머지를 구하는 동시에 몫을 반복해서 나눠야

kwanghori.tistory.com

이후는 0으로 split해준 word안에서 소수를 찾고 cnt+=1해줘가면 된다!

def solution(n, k):
    word=""
    while n:            # 숫자를 k진법으로 변환
        word = str(n%k)+word
        n=n//k
        
    word=word.split("0")  # 변환된 숫자를 0을 기준으로 나눈다.
    
    count=0
    for w in word:
        if len(w)==0:    # 만약 0또는 1이거나 빈공간이라면 continue를 통해 건너뛴다.
            continue
        if int(w)<2:
            continue
        sosu=True
        for i in range(2,int(int(w)**0.5)+1): # 소수찾기
            if int(w)%i==0:
                sosu=False
                break
        if sosu:
            count+=1
            
    return count

'코테 준비 > 프로그래머스' 카테고리의 다른 글

[level 2] 점 찍기  (0) 2023.05.26
[level 2] 택배상자  (0) 2023.05.23
[level 2] 피로도  (0) 2023.05.13
[level 2] n^2 배열 자르기  (0) 2023.05.13
[level 1] 대충 만든 자판  (0) 2023.05.10