적어도 대부분의 배수 [백준] 1145번 java

최준호·2022년 5월 6일
0

algorithm

목록 보기
38/39
post-thumbnail

문제 링크

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class B1145 {
    public static void main(String[] args) throws Exception{
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String input1 = bf.readLine().trim();

        solve(input1);
    }
    public static void solve(String input1){
        String[] s = input1.split(" ");
        dfs(1, s);
    }
    public static void dfs(int level, String[] s){
        int check = 0;
        if(level % Integer.valueOf(s[0]) == 0) check++;
        if(level % Integer.valueOf(s[1]) == 0) check++;
        if(level % Integer.valueOf(s[2]) == 0) check++;
        if(level % Integer.valueOf(s[3]) == 0 && check<3) check++;
        if(level % Integer.valueOf(s[4]) == 0 && check<3) check++;
        if(check >=3) {
            System.out.println(level);
            return;
        }
        dfs(++level, s);
    }
}

최초에 위와 같이 풀이했고

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class B1145 {
    public static void main(String[] args) throws Exception{
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String input1 = bf.readLine().trim();

        solve(input1);
    }
    public static void solve(String input1){
        String[] s = input1.split(" ");
        dfs(1, s);
    }
    public static void dfs(int level, String[] s){
        int check = 0;

        for(String str : s){
            if(check >= 3) break;
            if(level % Integer.valueOf(str) == 0) check++;
        }
        if(check >=3) {
            System.out.println(level);
            return;
        }
        dfs(++level, s);
    }
}

반복되는 부분을 리팩토링하여 for문으로 수정하였다.

profile
코딩을 깔끔하게 하고 싶어하는 초보 개발자 (편하게 글을 쓰기위해 반말체를 사용하고 있습니다! 양해 부탁드려요!) 현재 KakaoVX 근무중입니다!

0개의 댓글