티스토리 뷰
Algorithm/[Java+Python+JavaScript]BackJoon
[BackJoon]2581번 스트림으로 풀기
Vagabund.Gni 2022. 12. 23. 12:07728x90
반응형
문제
자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오.
예를 들어 M=60, N=100인 경우 60 이상 100 이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로,
이들 소수의 합은 620이고, 최솟값은 61이 된다.
입력
입력의 첫째 줄에 M이, 둘째 줄에 N이 주어진다.
M과 N은 10,000이하의 자연수이며, M은 N보다 작거나 같다.
출력
M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그중 최솟값을 출력한다.
단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.
풀이
소수를 찾는 방법에는 왕도가 없다.
에라토스테네스의 체를 통해 노가다 횟수를 줄이고 입/출력과 반복 시간을 줄이는 것 외에는.
해서 코드라도 짧게 적어보고자 스트림의 summarizingInt() 메서드를 활용해 보았다.
호시탐탐 사용할 기회만 노리고 있었는데, 연습하기 좋았다.
import java.util.IntSummaryStatistics;
import java.util.Scanner;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class Prob2581Stream {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
int n = sc.nextInt();
IntSummaryStatistics result = IntStream.rangeClosed(m, n)
.filter(a -> a > 1)
.filter(a -> IntStream.rangeClosed(2, (int)Math.sqrt(a)).allMatch(b -> a % b != 0))
.boxed()
.collect(Collectors.summarizingInt(a -> a));
if (result.getCount() == 0) System.out.println(-1);
else {
System.out.println(result.getSum());
System.out.println(result.getMin());
}
}
}
반응형
'Algorithm > [Java+Python+JavaScript]BackJoon' 카테고리의 다른 글
[BackJoon]4948번 베르트랑 공준 스트림으로 풀기 (2) | 2022.12.24 |
---|---|
[BackJoon]1929번 스트림으로 풀기 (1) | 2022.12.23 |
[BackJoon]11653번 (3) | 2022.12.23 |
[BackJoon]1978번 스트림으로 풀기 (1) | 2022.12.22 |
[BackJoon]2839번 (1) | 2022.12.22 |
[BackJoon]2775번 (2) | 2022.12.21 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 유럽
- 파이썬
- Backjoon
- spring
- a6000
- java
- 동적계획법
- 세모
- 기술면접
- 세계일주
- 스프링
- Algorithm
- 세계여행
- 중남미
- 유럽여행
- 면접 준비
- 자바
- 칼이사
- 스트림
- 여행
- Python
- 리스트
- BOJ
- 야경
- 지지
- 맛집
- 알고리즘
- 백준
- RX100M5
- 남미
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함