Java/Java 알고리즘

백준 1145번 적어도 대부분의 배수JAVA 구현해보기

kimc 2022. 5. 15. 11:09

```

백준 1145번 적어도 대부분의 배수 JAVA 구현해보기

```

이번 글을 통해 배워갈 내용

  1. 백준 1145번 풀이

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

 

1145번: 적어도 대부분의 배수

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

www.acmicpc.net

 

백준 1145번 적어도 대부분의 배수는

난이도 브론즈 등급의 문제로서

 

서로다른 자연수 5개가 주어지면

주어진 수 중 적어도 세 개로 나누어지는 가장 작은 자연수를 출력하면 되는 문제입니다.

 


30분 정도 위에 링크를 방문하셔서 풀어보시고

안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.

 

 

Brute force를 사용해서

1부터 나올 수 있는 최대의 숫자까지

Intstream 혹은 for 문을 돌려서

3개 이상의 수로 나눠지는 수라면 해당되는 수를 출력하면 되는 문제입니다.

 

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.List;
import java.util.OptionalInt;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class Main {
    // BufferedReader Object 생성
    static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    public static void main(String[] args) throws IOException {
        List<Integer> nList = Arrays.stream(br.readLine().split(" ")).map(Integer::parseInt).sorted().collect(Collectors.toList());
        System.out.print(cm(nList));
    }


    // 1 부터 3번째 큰수 * 2번째 큰수 * 첫번째 큰수까지
    // 1씩 올려가면서 조건에 부합하는 숫자를 찾으면 반환합니다.
    public static int cm(List<Integer> nList) {
        final int nListSize = nList.size();
        final int maxM = nList.get(nListSize - 1) * nList.get(nListSize - 2) * nList.get(nListSize - 3);

        OptionalInt op = IntStream.range(1, maxM).filter(m -> {
                    boolean isS = false;
                    int cnt = 0;
                    for (int n : nList) {
                        if (m % n == 0) {
                            cnt++;
                            if (cnt == 3) {
                                isS = true;
                            }
                        }
                    }
                    return isS;
                }
        ).findFirst();

        return op.isPresent() ? op.getAsInt() : 0;
    }
}
//codemasterkimc.tistory.com [김씨의 코딩 스토리]

 

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    // BufferedReader Object 생성
    static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    public static void main(String[] args) throws IOException {
        List<Integer> nList = Arrays.stream(br.readLine().split(" ")).map(Integer::parseInt).sorted().collect(Collectors.toList());
        System.out.print(cm(nList));
    }


    // 1 부터 3번째 큰수 * 2번째 큰수 * 첫번째 큰수까지
    // 1씩 올려가면서 조건에 부합하는 숫자를 찾으면 반환합니다.
    public static int cm(List<Integer> nList) {
        final int nListSize = nList.size();
        final int maxM = nList.get(nListSize - 1) * nList.get(nListSize - 2) * nList.get(nListSize - 3);
        int rv = maxM;

        outerLoop:
        for (int m = 1; m < maxM; m++) {
            int cnt = 0;
            for (int n : nList) {
                if (m % n == 0) {
                    cnt++;
                    if (cnt == 3) {
                        rv = m;
                        break outerLoop;
                    }
                }
            }
        }

        return rv;
    }
}
//codemasterkimc.tistory.com [김씨의 코딩 스토리]

 

읽어주셔서 감사합니다

 

무엇인가 얻어가셨기를 바라며

 

오늘도 즐거운 코딩 하시길 바랍니다 ~ :)

 


 

728x90