알고리즘 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.
문제
[뒤집은 소수]
N개의 자연수가 입력되면 각 자연수를 뒤집은 후, 그 뒤집은 수가 소수이면 그 수를 출력하는 프로그램을 작성하시오.
예를 들어 32는 32를 뒤집으면 23이 되고, 23은 소수이므로 23을 출력하면 된다.
*참고
910을 뒤집으면 19가 되도록 프로그램을 작성해야 한다.
즉, 특정 숫자를 뒤집었을 때 첫 자리부터 연속된 0은 무시하도록 프로그램을 작성하시오.
또한, 뒤집는 함수 reverse(x)와 소수인지를 확인하는 함수 isPrime(x)를 반드시 작성하여 프로그래밍을 하시오.
*입력 설명
첫 번째 줄에 자연수의 개수 N(3 ≤ N ≤ 100)이 주어진다.
두 번째 줄에 N개의 자연수가 주어진다.
*출력 설명
첫 번째 줄에 뒤집은 소수를 출력한다.
단, 출력 순서는 입력된 순서대로 한다.
풀이(Python)
답안
import sys
sys.stdin = open('AA/input_8.txt', 'rt')
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//2+1):
if x % i == 0:
return False
else:
return True
for x in a:
tmp = reverse(x)
if isPrime(tmp):
print(tmp, end=' ')
# 출력 : 23 73
input_8.txt(입력)
5
32 55 62 3700 250
중요내용
- for i in range(2, x//2+1): 는 x가 1과 자신 이외의 약수를 갖는지 확인하는 과정이므로, x를 2부터 x를 2로 나눈 몫(x//2)까지 나눠서 확인하겠다는 의미의 코드이다.
- for-if-else 구문은 for문이 돌면서 if문의 조건을 만족하지 않는 경우, for문을 모두 마치면 else문을 마지막에(1회) 실행한다.
'알고리즘' 카테고리의 다른 글
Algorithm - 점수 계산 (0) | 2021.11.02 |
---|---|
Algorithm - 주사위 게임 (0) | 2021.11.02 |
Algorithm - 소수의 개수(에라토스테네스 체) (0) | 2021.11.02 |
Algorithm - 자릿수의 합 (0) | 2021.11.02 |
Algorithm - 정다면체 (0) | 2021.11.02 |
댓글