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

이번 글을 통해 배워갈 내용
- 백준 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
'Java > Java 알고리즘' 카테고리의 다른 글
| 백준 14487번 욱제는 효도쟁이야!!JAVA 구현해보기 (0) | 2022.05.17 |
|---|---|
| 백준 11945번 뜨거운 붕어빵 JAVA 구현해보기 (0) | 2022.05.15 |
| 백준 3079번 입국심사 JAVA 구현해보기 (0) | 2022.05.15 |
| 백준 10822번 더하기 JAVA 구현해보기 (0) | 2022.05.14 |
| 백준 10821번 정수의 개수 JAVA 구현해보기 (0) | 2022.05.14 |