[Problem Solving/Java] 백준 2581번 - 소수

2023. 8. 30. 10:01·알고리즘 문제 풀이 (Problem Solving)

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

 

2581번: 소수

M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다.  단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.

www.acmicpc.net

문제

자연수 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을 출력한다.

첫 번째 시도

package ex1;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Main2 {

	public static void main(String[] args) throws IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int a = Integer.parseInt(br.readLine());
		int b = Integer.parseInt(br.readLine());
		ArrayList<Integer> list = new ArrayList<>();
		

		for (int i = a; i < b+1; i++) {
			for(int j=2; j<b+1; j++){
				if(i%j==0&&i!=j) {
					break;
				}else if(i%j==0&&i==j) {
					list.add(i);
				}
			}
		}
		
		int sum=0;
		
		if(!list.isEmpty()) {
		for(int i=0;i<list.size();i++) {
			sum=sum+list.get(i);
		}
		
		System.out.println(sum);
		System.out.println(list.get(0));
		}
		else
			System.out.println(-1);
	}
}

해결 방법

  • 소수 찾는 방법은 이전 문제와 동일하게 작성했다. 입력한 두 값 사이에 소수가 없다면 -1을 출력하는 코드를 작성하는데 약간의 시간이 걸렸지만, 소수를 담는 ArrayList가 비어 있다면 -1을 출력하도록 하고, 비어 있지 않다면 합과 최소값을 출력하도록 했다.

어려웠던 점 / 고쳐야할 점

  • 소수가 없을 경우 예외 처리
반응형

'알고리즘 문제 풀이 (Problem Solving)' 카테고리의 다른 글

[Problem Solving/Java] 백준 4948번 - 베르트랑 공준  (2) 2024.01.02
[Problem Solving/Java] 백준 1929번 - 소수 구하기  (0) 2024.01.02
[Problem Solving/Java] 백준 1978번 - 소수 찾기  (0) 2023.08.30
[Problem Solving/Java] 백준 1712번 - 손익분기점  (0) 2023.08.30
[Problem Solving/Java] 백준 1316번 - 그룹 단어 체커  (0) 2022.04.07
'알고리즘 문제 풀이 (Problem Solving)' 카테고리의 다른 글
  • [Problem Solving/Java] 백준 4948번 - 베르트랑 공준
  • [Problem Solving/Java] 백준 1929번 - 소수 구하기
  • [Problem Solving/Java] 백준 1978번 - 소수 찾기
  • [Problem Solving/Java] 백준 1712번 - 손익분기점
LoopThinker
LoopThinker
모르는 것을 알아가고, 아는 것을 더 깊게 파고드는 공간
  • LoopThinker
    CodeMemoir
    LoopThinker
  • 전체
    오늘
    어제
    • 분류 전체보기 (231)
      • 개발 (Development) (165)
        • Algorithm (1)
        • Angular (1)
        • AWS (6)
        • DeepSeek (2)
        • Docker (7)
        • Git (3)
        • Java (34)
        • JavaScript (4)
        • Kafka (5)
        • Kubernetes (4)
        • Linux (7)
        • PostgreSQL (38)
        • Python (31)
        • React (3)
        • TypeScript (3)
        • Vue.js (5)
        • General (11)
      • 데이터 분석 (Data Analysis) (1)
      • 알고리즘 문제 풀이 (Problem Solving.. (27)
      • 자격증 (Certifications) (24)
        • ADsP (14)
        • 정보처리기사 (4)
        • Linux Master (5)
        • SQLD (1)
      • 기술 동향 (Tech Trends) (11)
      • 기타 (Others) (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자바
    데이터분석
    ADsP
    Kubernetes
    timescaledb
    MyBatis
    백준
    리눅스 마스터 2급 2차
    javascript
    JSON
    PostgreSQL
    DevOps
    docker
    springboot
    백준온라인저지
    AWS
    deepseek
    JPA
    python
    Vue.js
    백준자바
    리눅스 마스터 2급
    java
    오답노트
    Linux
    pandas
    Kafka
    Linux master
    Spring boot
    백준알고리즘
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
LoopThinker
[Problem Solving/Java] 백준 2581번 - 소수
상단으로

티스토리툴바