본문 바로가기

전체 글62

백준 11399번 ATM ATM은 ATM 앞에 줄 선 사람들의 순서를 조작해 모두가 은행업무를 마칠 수 있는 최소한의 시간을 구하는 문제다. (선두에 줄을 선 사람에는 손해일 수도 있으며, 손해 여부를 떠나 현실에서는 결코 일어날 수 없는 일이다..) 주어진 문제 설명에 따르면 사람에 따라 각각 다음과 같은 시간이 소요된다고 한다. Person 1 Person 2 Person 3 Person 4 Person 5 3 분 1 분 4 분 3 분 2 분 업무 처리에 개인이 소요하는 시간은 순서에 따라 상관없이 일정하지만, 뒤에 서 있을 수록 앞 사람들이 일을 모두 마칠 때까지 기다려야 하므로 실제로 업무 처리에 소요되는 시간은 다음과 같으며 총 39분이 소요된다. Person 1 Person 2 Person 3 Person 4 Pers.. 2023. 3. 11.
백준 1541번 잃어버린 괄호 잃어버린 괄호는 주어진 식에 괄호를 대입하여 식의 값을 최소로 만드는 문제다. 55-50+40 의 값을 최소로 만들기 위해서는 괄호를 어디에 배치해야 할까? 덧셈과 뺄셈을 사용해 식을 계산할 때 최소값을 얻기 위해서는 되도록 큰 수를, 그리고 여러번 빼줘야한다. 따라서, (-)를 기준으로 양 옆을 각각 괄호로 감싼다면 최소값인 -35 를 얻을 수 있다. 만약 1+2 - 3+4 - 5+6 이라는 식이 주어진다면 어떨까? 이 역시 마찬가지로 (-)를 기준하여 식을 괄호로 감싸면 최소값을 얻을 수 있다. 1+2 - 3+4 - 5+6 ---> (1+2) - (3+4) - (5+6) 이를 코드로 구현하기 위해서 아래와 같은 순서로 진행하였다. 주어진 식을 ( - )를 기준으로 나눈다. "55-50+40" --->.. 2023. 3. 10.
백준 11050번 이항계수 1 주어진 두 숫자(N, K)의 이항계수를 구하는 문제다. 본 문에서는 공식의 r 대신 K를 대입한다. 이항계수 공식에 따라 fatorial을 재귀함수로 구현하여 풀이했다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int N = in.nextInt(); int K = in.nextInt(); int ans = factorial(N) / (factorial(K) * factorial(N - K)); System.out.println(ans); } public static Integer factorial(Integer n) { if (n 2023. 3. 10.
백준 11047번 동전 0 동전 0는 주어진 동전(동전의 종류는 N개이다)을 활용해 최소한의 개수로 거스름돈(K)을 지불하는 문제다. 먼저, 내가 사용할 수 있는 동전의 종류를 기억하자 int[] coins = new int[N]; for (int i = 0; i = 0; i--) { int coin = coins[i] } 그러나 4,200원의 거스름돈을 지불하기 위해 10,.. 2023. 3. 10.