코딩 테스트/백준

[백준] 1145번: 적어도 대부분의 배수 (브론즈1, 브루트포스 알고리즘, JAVA)

Nirsa 2023. 12. 28. 22:06
반응형

 

문제 링크 : https://www.acmicpc.net/problem/1145

 

[백준] 1145번: 적어도 대부분의 배수 (브론즈1, 브루트포스 알고리즘, JAVA)

해당 문제는 입력받은 5개의 숫자 중, 3개 이상이 공통적으로 가지는 배수를 찾아내는 브루트포스(완전탐색) 문제 입니다. 우선 사용자로부터 입력받은 후 오름차순으로 정렬하고 최솟값을 가지는 0번 인덱스에서 부터 무한루프를 사용하여 탐색을 시작합니다.

public class Main {
    public static void main(String[] args) throws IOException {
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	StringBuilder sb = new StringBuilder();
    	
    	String input = br.readLine();
    	sb.append(input);
    	
    	String[] strArr = sb.toString().split(" ");
        
    	int value = 1;
        
        while(true) {
        	// 로직 작성
    	}
    }
}

 

아래 코드는 while문 안의 로직인데, 우선 배수가 몇개인지 찾을 count 변수를 항상 0으로 초기화 합니다. 이후 입력받은 strArr 배열의 0번인덱스부터 마지막 인덱스(4) 까지 반복하여 0으로 나누어 떨어지는 수가 있다면 count의 값을 증가시킵니다.

만약 count의 값이 3 이상일 경우  break로 while문을 빠져나온 후 count된 value를 출력하고, 3 미만일 경우 value의 값을 1씩 증가시키며 또 다시 strArr 배열의 모든 값을 확인하며 0으로 나누어 떨어지는 수의 개수를 구하게 됩니다.

while(true) {
    int count = 0;

    for(int i=1; i<strArr.length; i++) {  // 배열을 한바퀴 돌음
        if(value % Integer.parseInt(strArr[i]) == 0) { // min으로 나눈 값이 0(배수)라면
            count++;
        }
    }

    if(count >= 3) { // 배수가 3개 이상일 경우 출력 후 break
        break;
    } else {
    	value++;
    }
}
System.out.println(value);

 

반응형