Eat the ENAK

BOJ2581 - 소수 본문

PS: Problem Solving/BOJ: 백준온라인저지

BOJ2581 - 소수

으낙 2019. 10. 29. 12:06

문제 바로가기

https://www.acmicpc.net/problem/2581

Solved.ac* 난이도

* Solved.ac는 백준 온라인 저지의 문제들에 난이도를 매겨주는 서비스입니다. 자세한 내용은 홈페이지를 참고해주세요.

 


본문


해설

https://github.com/return0927/CodingWrite-UP/blob/master/BOJ/2581/2581.py

 

소수 판별법(\(O(\sqrt{n})\))에 대한 내용은 이전 글에 자세히 설명해두었다.

2019/10/29 - [PS: Problem Solving/BOJ: 백준온라인저지] - BOJ1929 - 소수 구하기

 

이후 한 줄로 주어진 폐구간 \([m, n]\)를 받고 그 사이의 소수들을 모두 구해준다.

# 1 <= under, over <= 10000
under, over = int(input()), int(input())

primes = [*filter(lambda x: check_prime(x), [*range(under, over + 1)])]

 

[*range(under, over+1)]하면 폐구간 \([m, n]\)의 정수 원소를 뿌려준다. 그리고 내장함수인 filter를 이용해 check_prime(x) 값이 True인 원소만 빼내주면 된다. 이 때, filter함수는 iterable 객체를 리턴하기 때문에 [filter(....)]하면 [<iterable>]이 되기 때문에 오류이다. 키워드 *를 넣어주어 iterable의 값을 모두 꺼내주자.

 

그래서 만약 리스트 primes가 bool True이면 구간 안의 소수의 합과 최소의 소수를 출력하고, bool False이면 -1를 출력하자.

if primes:
    print(sum(primes))
    print(primes[0])
else:
    print(-1)

 

'PS: Problem Solving > BOJ: 백준온라인저지' 카테고리의 다른 글

BOJ2798 - 블랙잭  (0) 2019.10.29
BOJ1978 - 소수 찾기  (0) 2019.10.29
BOJ1929 - 소수 구하기  (0) 2019.10.29
BOJ1085 - 직사각형에서 탈출  (0) 2019.10.29
BOJ3009 - 네 번째 점  (0) 2019.10.29
Comments