목차
N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 수를 출력하는 프로그램을 작성하세요.
예를 들어 32를 뒤집으면 23이고, 23은 소수이다. 그러면 23을 출력 한다.
단 910를 뒤집으면 19로 숫자화 해야 한다. 첫 자리부터의 연속된 0은 무시한다.
뒤집는 함수인 def reverse(x) 와 소수인지를 확인하는 함수 def isPrime(x)를 반드시 작성하 여 프로그래밍 한다.
▣ 입력설명
첫 줄에 자연수의 개수 N(3<=N<=100)이 주어지고, 그 다음 줄에 N개의 자연수가 주어진다.
각 자연수의 크기는 100,000를 넘지 않는다.
▣ 출력설명
첫 줄에 뒤집은 소수를 출력합니다. 출력순서는 입력된 순서대로 출력합니다.
▣ 입력예제 1
5
32 55 62 3700 250
▣ 출력예제 1
23 73
나의코드
def reverse(x):
res=0
while x>0:
if x%10==0:
x=x//10
else:
res=res*10+x%10
x=x//10
return res
def isPrime(x):
for i in range(2,x):
if x%i==0:
return False
return True
n=int(input())
arr=list(map(int,input().split()))
for i in range(n):
x=reverse(arr[i])
if isPrime(x):
print(x,end=' ')
reverse함수를 구현하는데 시간이 쬐끔 소요 되었다.
res=res*10 +x%10이라는 식을 사용하여 숫자를 뒤집었다.
import sys
sys.stdin=open("input.txt", "r")
n=int(input())
a=list(map(int, input().split()))
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):
if x%i==0:
return False
return True
for x in a:
tmp=reverse(x)
if isPrime(tmp):
print(tmp, end=' ')
나의 코드와 거의 비슷하지만 reverse함수에서 입력 받은 숫자의 뒷부분이 0 이라는것과 상관없이 나의 코드의 else 부분으로만 작성되어있다.
생각해보니 굳이 분기 처리를 하지 않았어도 되었다...!
'코딩테스트[파이썬] > 알고리즘 문제풀이 입문' 카테고리의 다른 글
[구현력 키우기] - 점수계산 (0) | 2024.02.05 |
---|---|
[구현력 키우기] - 주사위 게임 (2) | 2024.02.05 |
[구현력 기르기] - 소수의개수(에라토스테네스의 체) (0) | 2024.02.05 |
[구현력 기르기] - 자릿수의합 (2) | 2024.02.04 |
[구현력 기르기] - 정다면체 (0) | 2024.02.04 |