본문 바로가기

Algorithm/Inflearn

[Python/알고리즘] 인프런 뒤집은 소수

문제출처

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로 말아준다

반응형