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

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

URL

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

문제

자연수 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
  • 전체
    오늘
    어제
    • 분류 전체보기 (237)
      • 개발 (Development) (170)
        • Algorithm (1)
        • Angular (1)
        • AWS (7)
        • DeepSeek (2)
        • Docker (7)
        • Git (3)
        • Java (36)
        • JavaScript (4)
        • Kafka (5)
        • Kubernetes (4)
        • Linux (7)
        • PostgreSQL (38)
        • Python (33)
        • 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) (12)
      • 기타 (Others) (3)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바