백준 적어도 대부분의 배수

KIMYEONGJUN·2024년 10월 29일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

첫째 줄에 다섯 개의 자연수가 주어진다.
100보다 작거나 같은 자연수이고,
서로 다른 수이다.

첫째 줄에 적어도 대부분의 배수를 출력한다.

내가 이 문제를 보고 생각해본 부분

입력값들을 저장해줄 배열 선언해준다.
몇개의 입력값이 나누어 떨어지느지 체크할 변수를 선언해준다.
결과값을 저장할 변수선언해준다.
그리고 for문을 이용해서 5번을 입력을 받을 수 있게 선언해준다.
while문 사용해서 무한루프 작성해준다.
N을 1부터 시작하여 점진적으로 증가시키고 이 루프는 적어도 세 개의 수로 나누어 떨어지는 값을 찾을 때까지 계속한다.
현재 N 값이 배열 arr의 수 중 몇 개와 나누어 떨어지는지를 계산하고 count를 증가시켜준다.
만약 count가 3 이상이면,
즉 적어도 세 개의 수로 나누어 떨어지면 루프를 종료한다.

코드로 구현

package baekjoon.baekjoon_24;

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

// 백준 1145번 문제
public class Main821 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int[] arr = new int[5]; // 입력값들을 저장해줄 배열 선언
        int count = 0; // 몇개의 입력값이 나누어 떨어지느지 체크할 변수
        int N = 0; // 결과값을 저장할 변수
        
        StringTokenizer st = new StringTokenizer(br.readLine());
        for(int i = 0; i < 5; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }

        while(true) { // 몇에서 3개이상이 나눠질지 모르기 때문에 무한루프
            N++;
            for(int i = 0; i < 5; i++) { // N값을 나눴을때 입력값들이 나누어 떨어지면 count +1
                if(N >= arr[i] && N % arr[i] == 0) {
                    count++;
                }
            }
            if(count > 2) { // 3개이상 나눠지면 무한루프 종료
                break;
            }
            count = 0; // 3개이상 나눠지지 않았으면 count 초기화
        }

        System.out.println(N);
        br.close();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글