📌
N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 수를 출력하는 프로그램을 작성하세요. 예를 들어 32를 뒤집으면 23이고, 23은 소수이다. 그러면 23을 출력 한다. 단 910를 뒤집으면 19로 숫자화 해야 한다. 첫 자리부터의 연속된 0은 무시한다. 뒤집는 함수인 def reverse(x) 와 소수인지를 확인하는 함수 def isPrime(x)를 반드시 작성하 여 프로그래밍 한다.
ex ) 32 가 입력되면, reverse(32) 로 23으로 만들어주고,
isPrime(reverse(32)) 로 소수라면 True, 아니면 False를 return 해준다.
✔️ 내가 짠 코드
import sys
sys.stdin=open("input.txt", "r")
n=int(input())
input_list=list(map(int, input().split()))
def reverse(x):
#print(int(str(x)[::-1]))
return int(str(x)[::-1])
def isPrime(x):
if x==1:
return False
for i in range(2, x//2+1):
#만약 i로 나누어떨어진다면 소수가 아님
if x % i == 0:
return False
else:
return True
for x in input_list:
reverse_num=reverse(x)
if isPrime(reverse_num):
print(reverse_num, end=' ')
>>>
자릿수의 합 알고리즘 풀기에서 str로 매개변수 x를 분리하고 다시 정수형으로 바꾸어주었던 것이 생각났다.
str(x)[::-1] 로 x의 type을 변환하고 뒤집은 뒤, 다시 정수형으로 바꾼 x를 return하면 뒤집어진 숫자가 된다.
✔️ 실제 코드
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:
retuen False
for i in range(2, x//2+1):
if x%i==0:
return False
else:
return True
a=list(map(int, input().split()))
for x in a:
tmp=reverse(x)
if isPrime(tmp):
print(tmp, end=' ')
>>>
실제 코드에서는 x를 10으로 나눈 몫과 나머지를 이용하여 함수를 구현했다.
'알고리즘' 카테고리의 다른 글
[알고리즘] 회문 문자열 검사 (0) | 2022.01.24 |
---|---|
[알고리즘] 점수계산 (0) | 2022.01.24 |
[알고리즘] 소수 (0) | 2022.01.21 |
[알고리즘] 자릿수의 합 (0) | 2022.01.20 |
[알고리즘] 정다면체 (0) | 2022.01.19 |