본문 바로가기

Algorithm22

백준 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.
백준 1037번 약수 이 문제는 주어진 어떤 숫자 N의 약수를 활용해 N을 구하는 문제다. 만약 다음과 같이 간단한 약수가 주어질 경우 [4, 8, 2] 다음과 같은 생각을 흐름을 통해 N이 16이라는 것을 금방 알 수 있게 된다. [2, 4, 8] 2023. 3. 9.