문제출처
N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 수를 출력하는 프로그램을 작성. 예를 들어 32를 뒤집으면 23이고, 23은 소수이다. 그러면 23을 출력한다. 단 910를 뒤집으면 19로 숫자화 해야 한다. 첫 자리부터의 연속된 0은 무시한다.
뒤집는 함수인 def reverse(x) 와 소수인지를 확인하는 함수 def isPrime(x)를 반드시 작성하여 프로그래밍 한다
풀이코드
N = int(input())
a = list(map(int,input().split()))
def reverse(x):
return int(str(x)[::-1])
def isprime(x):
if x == 1:
return False
for i in range(2, x//2+1):
if (x % i == 0):
return False
return True
for i in a:
rev = reverse(i)
if isprime(rev):
print(rev, end=' ')
코드설명
1. 첫 줄에 자연수의 갯수 입력
2. 한 개의 묶음으로 담긴 리스트로 반환
3. reverse는 list타입에서 제공하는 함수
4. [::-1]의 슬라이싱 표기법을 이용하면 시퀀스(문자열이나 리스트 등)의 원소 순서를 역순으로 만듬
5. 1과 자기 자신 정수를 포함하지 않기 위해, 16을 예로 들때 2,8도 되기때문에 //2로 진행
6. a에서 하나씩 꺼내 역순으로 만든 후 소수로 확인
기타사항
int is no attribute reverse, str으로 진행
map 함수 (map은 주어진 반복 가능의 모든 요소에 함수를 적용하는 Python의 기본 제공 함수)
reverse vs reversed
reverse : list에서 제공하는 함수
reversed : reversed는 내장함수이며 listreverseiterator를 반환하기 때문에 다시 list로 말아준다
반응형