취업/TIL

20231107_뒤집은소수_소수판별법[Python알고리즘]

개발자 덕구🐾 2023. 11. 7. 22:50
728x90

 

 

그랜트 카돈

 

 

<요즘 내가 읽는 책인 집착의 법칙의 저자 그랜트 카돈 >

 

 

 

 

오늘도 김태원 - 파이썬 알고리즘 문제를 풀었다. 

 

 

1. 주사위게임 

 

def reverse(x) :
    res = 0
    while x !=0 :
        t = x % 10 # x의 끝자리를 t에 넣는다
        res = res * 10 +t  # 기존의 res를 한칸 앞으로, t를 뒤에 넣는다.
        x = x // 10 # x의 끝자리를 없앤다
    return res 
def isPrime(x) :
    if x == 1 : return False 
    for i in range(2,x//2+1 ):
         if x%i ==0 : return False 
    else : return True 
    
if __name__=="__main__" :
    n = int(input())
    arr = list(map(int,input().split()))
    for tmp in arr :
        rev_tmp=reverse(tmp)
        if isPrime(rev_tmp) : print(rev_tmp,end=' ')

 

 

문제를 보고 reverse도 isPrime도 모르겠어서 절망한뒤에 

강사님의 코드를 보았다. 

 

흠 ... 똑똑하시구나 

 

근데 이전에 내가 작성했던 코드를 보면 x를 string으로 받아서 [::-1]으로 간단하게 reverse를 하더라ㅎㅎ 

 

 

 

+ 소수를 판별하는 방법은 

1. 일단 1은 소수가 아니다.

2. 2부터 해당 숫자를 2로 나눈 몫+1까지 for문을 돈다. 

-> 2로 나눈 몫이 나올 때까지 없으면 그건 소수가 아닌거다. 

-> +1을 하는 이유는 python의 for문은 두번째에 적은 수 -1 까지 돌기 때문이다.

3. for else 문을 사용하여 만약 for문에 걸려들어 return을 하지 않은 상태라면 True ( 나 소수입니다!)를 return 한다.

 

 

 

 

 

 

 

def reverse(x) :
    tmp =str(x)[::-1]
    return int(tmp)
def isPrime(x) :
    if x == 1 : return False 
    for i in range(2,x//2+1 ):
         if x%i ==0 : return False 
    else : return True 
    
if __name__=="__main__" :
    n = int(input())
    arr = list(map(int,input().split()))
    for tmp in arr :
        rev_tmp=reverse(tmp)
        if isPrime(rev_tmp) : print(rev_tmp,end=' ')

 

이렇게! 

 

 

공부하는 양이 터무니없이 적다 ...............

늘리자 

반응형