문제
https://www.acmicpc.net/problem/2581
2581번: 소수
M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.
www.acmicpc.net
M부터 N까지 소수의 합과 최솟값을 구하시오
풀이
import sys M = int(sys.stdin.readline()) N = int(sys.stdin.readline()) a = list(range(M,N+1)) print(M,N,a)
사실 이렇게 배열 만들어서 하려고 했더니 일부 합성수가 안 지워졌다.
import sys M = int(sys.stdin.readline()) N = int(sys.stdin.readline()) P = [] def isprime(a): if a < 2: return False for i in range(2,a): if a % i == 0: return False else: return True for i in range(M,N+1): if isprime(i): P.append(i) print(sum(P)) print(min(P))
그래서 이게 최선임.. 아니 일단 내지 말아봐… 일단 답이 없을 때 -1을 출력하려면, 어떻게 나오는지를 봐야 한다.
[] 0 Traceback (most recent call last): File "/home/koreanraichu/Untitled-1.py", line 18, in <module> print(min(P)) ValueError: min() arg is an empty sequence
답이 없을 때는 리스트가 없고, 합도 없을뿐더러 빈 리스트라서 최솟값 찾아달라고 하면 오류난다.
import sys M = int(sys.stdin.readline()) N = int(sys.stdin.readline()) P = [] def isprime(a): if a < 2: return False for i in range(2,a): if a % i == 0: return False else: return True for i in range(M,N+1): if isprime(i): P.append(i) if len(P) <= 0: print(-1) else: print(sum(P)) print(min(P))
그래서 거기에 대한 처리를 추가해야 한다. 빈 리스트는 길이가 0이니까, 리스트 길이가 0이면 -1이 나오게 했다.
'BOJ > [BOJ] Python' 카테고리의 다른 글
백준 1929번 풀이 (0) | 2022.08.19 |
---|---|
백준 11653번 풀이 (0) | 2022.08.19 |
백준 1978번 풀이 (0) | 2022.08.18 |
백준 1011번 풀이 (0) | 2022.08.18 |
백준 10757번 풀이 (0) | 2022.08.18 |