
내가 생각했을때 문제에서 원하는부분
첫째 줄에 다섯 개의 자연수가 주어진다.
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();
}
}
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.