티스토리 뷰
Algorithm/[Java+Python+JavaScript]BackJoon
[BackJoon]2581번 스트림으로 풀기
Vagabund.Gni 2022. 10. 19. 18:49728x90
반응형
문제
자연수 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을 출력한다.
풀이
IntStream을 두 번 사용해서 문제를 풀었다.
역시 연산속도 향상을 위해 2부터 sqrt(a)까지만 순회했으며
소수가 없는 경우 -1을 출력하기 위해서 최솟값을 OptionalInt로 받은 후,
.empty()를 이용해 값이 없는 경우를 골라냈다.
결과적으로 코드가 조금 지저분해진 것 같지만, 만족.
import java.util.OptionalInt;
import java.util.Scanner;
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();
int result1 = IntStream.rangeClosed(m, n)
.filter(a -> a > 1)
.filter(a -> IntStream.rangeClosed(2, (int)Math.sqrt(a)).allMatch(b -> a % b != 0))
.sum();
OptionalInt result2 = IntStream.rangeClosed(m, n)
.filter(a -> a > 1)
.filter(a -> IntStream.rangeClosed(2, (int)Math.sqrt(a)).allMatch(b -> a % b != 0))
.min();
if(result2 == OptionalInt.empty()) System.out.println(-1);
else{
System.out.println(result1);
System.out.println(result2.getAsInt());
}
}
}
반응형
'Algorithm > [Java+Python+JavaScript]BackJoon' 카테고리의 다른 글
[BackJoon]8393번 스트림으로 풀기 (4) | 2022.10.24 |
---|---|
[BackJoon]4948번 스트림으로 풀기 (4) | 2022.10.21 |
[BackJoon]1929번 스트림으로 풀기 (6) | 2022.10.20 |
[BackJoon]1978번 스트림으로 풀기 (1) | 2022.10.14 |
[BackJoon]1193번 스트림으로 풀기 (0) | 2022.10.13 |
[BackJoon]2292번 스트림으로 풀기 (1) | 2022.10.12 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Python
- 칼이사
- 자바
- 동적계획법
- Algorithm
- 알고리즘
- 백준
- 남미
- 파이썬
- 유럽여행
- spring
- 중남미
- BOJ
- RX100M5
- 맛집
- 리스트
- 세계일주
- 세모
- a6000
- 여행
- 스트림
- Backjoon
- 야경
- 세계여행
- 지지
- 면접 준비
- java
- 유럽
- 스프링
- 기술면접
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함