코딩 테스트 챌린지

[8월 코테 챌린지] 프로그래머스 :: (Lv0) 225개 (Lv1) 62개 (Lv2) 32개 (Lv3) 4개 // 누적 323개

  • -
728x90
반응형

2024/08/24

(Lv0) 225개 (Lv1) 62개 (Lv2) 32개 (Lv3) 4개 // 누적 323개


풀이한 문제

Lv2

  1. k진수에서 소수 개수 구하기
 

프로그래머스

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

programmers.co.kr

 

문제 풀이

def isprime(n):
    if n == 1:
        return False
    elif n == 2:
        return True
    j = [False, False, True]+[True]*(n-2) #0번째=0 
    for i in range(2,n): 
        if j[i]:
            for k in range(i*2,n+1,i):
                j[k]=False
        if j[-1] == False:
            return False
    return True
    
    
 def solution(n, k):
    answer = 0
    n_str = ''
    while n:
        n_str += str(n%k)
        n//=k
    n_str = n_str[::-1]
    n_str = n_str.split('0')

    for i in n_str:
        if i != '' and isprime(int(i)):
            answer += 1
    return answer

처음엔 이렇게 작성했다.
평소엔 바로 n에 대해 소수인지 판별하는 함수를 구현하는 방식을 애용(?)했는데 이번 문제는 뭔가 아닐 것 같다는 생각에..ㅎㅎ;
에라토스테네스의 체로 구현했는데 1번과 11번에서 런타임 에러가 발생했다.

그래서 기존의 방식대로 각 숫자에 대해 소수인지를 판별하는 함수로 재구현했고, 통과됐다.

import math
def isprime(n):
    if n == 1:
        return False
    elif n == 2:
        return True
    m = math.ceil(n**(1/2))
    for i in range(2,m+1):
        if n%i==0:
            return False
    return True
    
def solution(n, k):
    answer = 0
    n_str = ''
    while n:
        n_str += str(n%k)
        n//=k
    n_str = n_str[::-1]
    n_str = n_str.split('0')

    for i in n_str:
        if i != '' and isprime(int(i)):
            answer += 1
    return answer

미완성 문제

Lv2

  1. 구명보트
  2. 피로도
320x100
728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.