떵호
seongho'Dev
떵호
전체 방문자
오늘
어제
  • 분류 전체보기 (116)
    • 회고 (2)
    • Algorithm (74)
      • 프로그래머스 (65)
      • 백준(BOJ) (2)
      • Note (7)
    • 기술독서 (25)
      • Clean Code (11)
      • 자바의 정석 (8)
      • 대규모 시스템 설계 기초 (6)
    • Computer Science (1)
      • Operating System (1)
    • Typescript (1)
    • JAVA (0)
    • Spring (6)
      • JPA (6)
    • AWS (2)
    • Git (2)
    • Etc (2)

블로그 메뉴

  • github

티스토리

태그

  • 완전탐색
  • 알고리즘
  • 구현
  • JPA
  • 코딩테스트 준비
  • 클린코드
  • Clean Code
  • 프로그래머스
  • 카카오 코테
  • 자바의 정석
hELLO · Designed By 정상우.
떵호

seongho'Dev

[Python] 프로그래머스 Lv2 - k진수에서 소수 개수 구하기 (2022 KAKAO BLIND RECRUITMENT)
Algorithm/프로그래머스

[Python] 프로그래머스 Lv2 - k진수에서 소수 개수 구하기 (2022 KAKAO BLIND RECRUITMENT)

2022. 6. 19. 15:02
728x90

🔗 문제링크

 

코딩테스트 연습 - k진수에서 소수 개수 구하기

문제 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소

programmers.co.kr

📂 분류

구현

💡 풀이

단순 구현 문제였는데 에라토스테네스의 체를 이용해 소수를 구하려고 했으나 범위를 얼마나 지정해야 줘야 알 수 없기에 단순하게 소수를 구하는 로직을 구현했다. 

 

에라토스테네스의 체를 이용하면 1번과 11번이 런타임 오류가 발생한다.

 

접근 방식

  • n을 k진수로 바꿔준다.
  • 문제 설명에 나와있는 조건에 따라 소수는 '0'을 split 한 숫자이다.

💻 코드

def convert(num, base):
    if base == 10:
        return str(num)

    code = "0123456789"
    ret = ''

    while True:
        if num < base:
            ret += str(code[num])
            break
        num, mod = divmod(num, base)
        ret += code[mod]

    return ret[::-1]


def isPrimeNumber(n):
    if n == 1:
        return False

    size = int(n ** 0.5)
    for i in range(2, size + 1):
        if n % i == 0:
            return False
    return True


def solution(n, k):
    answer = 0

    split = convert(n, k).split('0')

    for num in split:
        if num == '':
            continue
        if isPrimeNumber(int(num)):
            answer += 1

    return answer
728x90
저작자표시

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

[Python] 프로그래머스 Lv2 - 숫자의 표현  (1) 2022.06.20
[Python] 프로그래머스 Lv2 - 숫자 블록  (0) 2022.06.19
[Python] 프로그래머스 Lv2 - 멀리 뛰기  (0) 2022.06.18
[Python] 프로그래머스 Lv2 - 땅따먹기  (0) 2022.06.18
[Python] 프로그래머스 Lv2 - 다음 큰 숫자  (0) 2022.06.16
    'Algorithm/프로그래머스' 카테고리의 다른 글
    • [Python] 프로그래머스 Lv2 - 숫자의 표현
    • [Python] 프로그래머스 Lv2 - 숫자 블록
    • [Python] 프로그래머스 Lv2 - 멀리 뛰기
    • [Python] 프로그래머스 Lv2 - 땅따먹기
    떵호
    떵호

    티스토리툴바