bearbrick 2022. 5. 16. 17:32

*이 풀이는 인프런: 파이썬 알고리즘 문제풀이 강좌에 기반하였습니다.

 

 

 

내 풀이

 

1. 입력 값을 정수가 아닌 문자열로 받고, 내장함수 strip( )를 이용해 문자 양끝의 0을 제거한다.

2. 그리고 슬라이스 기능을 통해 역순으로 문자열을 배치한 후, 정수로 변환시킨다.

3. 소수인지 판별하기 위해서 약수의 개수가 2개인지 확인한다.

 

import sys
#sys.stdin=open("input.txt","rt")

def reverse(x):
    x=x.strip('0')
    x=int(x[::-1])
    return x

def isPrime(x):
    cnt=0
    for i in range(1,x+1):
        if x%i==0:
            cnt+=1
    if cnt==2:
        print(x, end=' ')

n = int(input())
arr = list(map(str, input().split()))

for i in arr:
    r=reverse(i)
    isPrime(r)

 

 

 

강사님 풀이

 

import sys
sys.stdin=open("input.txt","rt")

def reverse(x):
    res=0
    while x>0:
        t=x%10
        res=res*10+t
        x=x//10
    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

n=int(input())
a=list(map(int, input().split()))

for x in a:
    tmp=reverse(x)
    if isPrime(tmp):
        print(tmp, end=' ')

 

 

 

배운 점

 

1. 소수 판별하는 방법: 2부터 해당숫자의 절반까지의 숫자 중 약수가 있다면 소수가 아니고, 없다면 소수이다.

2. string 내장함수인 strip( )함수는 양끝의 특정문자를 제거한다.

3. [: : -1] 슬라이스 기능을 통해 역순으로 배치할 수 있다.