코딩하는 털보

21.09.10 TIL 본문

Diary/Today I Learned

21.09.10 TIL

이정인 2021. 9. 11. 13:08

백준 코드 퀴즈

2839번 설탕 배달

5로 나눈 값만큼 for문을 돌면서 최소 봉지 수 찾기

public class Q2839 {

    static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));


    public static void main(String[] args) throws IOException {
        int n = Integer.parseInt(reader.readLine());
        Set<Integer> resultSet = new TreeSet<>();

        for (int i = n/5; i >= 0; i--) {
            if ( (n - 5*i) == 0 ) {
                resultSet.add(i);
            } else if ( (n - 5*i)%3 == 0) {
                resultSet.add(i + ((n - 5*i)/3));
            }
        }
        if ( resultSet.isEmpty() ) {
            System.out.println(-1);
        } else {
            System.out.println(resultSet.toArray()[0]);
        }
    }
}

아래는 ST's LAB에서 참고한 풀이.
https://st-lab.tistory.com/72
나머지 조건별로 나눠서 결과 출력하기.
수행시간은 비슷하지만 이해하기 쉽고 깔끔하다.

public class Q2839 {

    static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    static int result;

    public static void main(String[] args) throws IOException {
        int n = Integer.parseInt(reader.readLine());

        if (n == 4 || n == 7) {
            result = -1;
        } else if (n % 5 == 0) {
            result = n/5;
        } else if (n % 5 == 1 || n % 5 == 3) {
            result = (n/5) + 1;
        } else {
            result = (n/5) + 2;
        }
        System.out.println(result);
    }
}

10757번 큰 수 A+B
long 타입 제한을 넘는 크기의 숫자 계산은 java.math.BigInteger 사용하기.

public class Q10757 {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String[] tests = reader.readLine().split(" ");

        BigInteger big1 = new BigInteger(tests[0]);
        BigInteger big2 = new BigInteger(tests[1]);
        System.out.println(big1.add(big2));
    }
}

1011번 Fly me to the Alpha Centauri
ST's LAB에서 규칙성을 참고하고 코딩
https://st-lab.tistory.com/79

public class Q1011 {

    public static void main(String[] args) throws IOException {

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int tests = Integer.parseInt(reader.readLine());
        int dist;
        int max;
        int result;

        for (int i = 0; i < tests; i++) {
            String[] test = reader.readLine().split(" ");
            dist = Integer.parseInt(test[1]) - Integer.parseInt(test[0]);
            System.out.println("dist:"+ dist);
            max = (int) Math.sqrt(dist);
            System.out.println("max:"+ max);

            result = max*2 - 1;
            int pow = (int) Math.pow(max, 2);
            if ( dist == pow ) {
                System.out.println(result);
            } else if ( dist <= pow + max ) {
                System.out.println(result+1);
            } else {
                System.out.println(result+2);
            }
        }
    }
}

10872번 팩토리얼
순회로 풀기

public class Q10872 {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(reader.readLine());
        int result = 1;

        for (int i = 0; i < n; i++) {
            result *= i+1;
        }
        System.out.println(result);
    }
}

재귀로 풀기

public class Q10872 {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(reader.readLine());
        System.out.println(recursive(n));
    }

    public static int recursive(int num) {
        if ( num == 0 ) {
            return 1;
        }
        return num*recursive(num-1);
    };
}

10870 피보나치

ublic class Q10870 {

    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(reader.readLine());

        System.out.println(recursive(n));
    }

    private static int recursive(int n) {
        if ( n == 0 || n == 1) {
            return n;
        } else {
            return recursive(n - 1) + recursive(n - 2);
        }
    }
}

Comments