본문 바로가기
🍪 Ect/#Study

[99클럽 코테 스터디] 36일차 TIL 완전탐색

by 개발한 너굴씨 2024. 8. 26.
728x90

 

 

오늘의 문제는 백준

 

적어도 대부분의 배수

 

 

문제

 

 

 

문제 설명 

100보다 작거나 같은 다섯개의 자연수가 주여졌을 때, 대부분의 배수를 출력하는 문제입니다. 

여기서 대부분의 배수란 입력받는 다섯개의 수 중 적어도 세 개로 나누어지는 가장 작은 자연수를 의미합니다. 

[입력]

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

[출력] 

첫째 줄에 적어도 대부분의 배수를 출력해야 합니다. 

 

[입력 예시]

30 42 70 35 90

[출력 예시]

210

 

 

 

 

문제 풀이 시간 

권장 풀이 시간은 60분이었고, 저는 30분이 걸렸습니다.

 

 

 

문제 접근 방식

5개의 자연수를 ArrayList에 입력받습니다. 이후 메서드를 사용하여 ArrayList를 탐색합니다. 이때, 1부터 시작하는 number 변수를 선언하여 조건에 맞는 값이 나올 때까지 탐색합니다. 현재 검사 중인 number가 ArrayList에 있는 값들로 나누어떨어지는지 확인합니다. 나누어떨어지면 cnt를 증가시키고, cnt가 3 이상이 되면 즉시 number를 반환합니다.

 

 

 

문제 풀이

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

public class Main
{
    private static List<Integer> numArr = new ArrayList<>();
    
    public static int multiple() {
        int number = 1; 
        
        while(true) {
            int cnt = 0;
            
            for(int num : numArr) {
                if(number % num == 0) {
                    cnt++;
                }
            }         
            if(cnt > 2) {
                return number;
        }
        number++;
      }
    }
    
    public static void main(String[] args) throws IOException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        while (st.hasMoreTokens()) {
            numArr.add(Integer.parseInt(st.nextToken()));
        }

        int answer = multiple();
        System.out.println(answer);

    }


}

 

 

 

 

 

 

 

 

 

 

 

이렇게 오늘 36일차 TIL을 작성해 보았습니다.

 

 

 

 

728x90

댓글