본문 바로가기

코딩테스트4

[알고리즘] #05 다이나믹 프로그래밍-효율적인 화폐 구성 🛠 '효율적인 화폐 구성' 문제 🔧 문제 N가지 종류의 화폐가 있다. 이 화폐들의 개수를 최소한으로 이용해서 그 가치의 합이 M원이 되도록 하려고 한다. 이때 각 화폐는 몇 개라도 사용할 수 있으며, 사용한 화폐의 구성은 같지만 순서만 다른 것은 같은 경우로 구분한다. 예를 들어 2원, 3원 단위의 화폐가 있을 때는 15원을 만들기 위해 3원을 5개 사용하는 것이 가장 최소한의 화폐 개수이다. - 입력조건 : 첫째 줄에 N, M이 주어진다(1 2022. 7. 3.
[알고리즘] #04 다이나믹 프로그래밍-개미전사 🛠 '개미 전사 '문제 🔧 문제 개미 전사는 부족한 식량을 충당하고자 메뚜기 마을의 식량창고를 몰래 공격하려고 한다. 메뚜기 마을에는 여러 개의 식량창고가 있는데 식량창고는 일직선으로 이어져 있다. 각 식량창고에는 정해진 수의 식량을 저장하고 있으며 개미 전사는 식량창고를 선택적으로 약탈하여 식량을 빼앗을 예정이다. 이때 메뚜기 정찰병들은 일직선상에 존재하는 식량창고 중에서 서로 인접한 식량창고가 공격받으면 바로 알아챌 수 있다. 따라서 개미 전사가 정찰병에게 들키지 않고 식량창고를 약탈하기 위해서는 최소한 한 칸 이상 떨어진 식량창고를 약탈해야 한다. 예를 들어 식량창고 4개가 다음과 같이 존재한다고 가정하자. {1, 3, 1, 5} 이때 개미 전사는 두 번째 식량창고와 네 번째 식량창고를 선택했을 때.. 2022. 7. 3.
[알고리즘] #03 다이나믹 프로그래밍-1로 만들기 🛠 '1로 만들기' 문제 🔧 문제 정수 X가 주어질 때 정수 X에 사용할 수 있는 연산은 다음과 같이 4가지 이다. 1. X가 5로 나누어떨어지면, 5로 나눈다. 2. X가 3으로 나누어떨어지면, 3으로 나눈다. 3. X가 2로 나누어떨어지면, 2로 나눈다. 4. X에서 1을 뺀다. 정수 X가 주어졌을 때, 연산 4개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. - 입력조건 : 첫째 줄에 정수 X가 주어진다. (1 2022. 7. 3.
[알고리즘] #01 그리디 알고리즘-거스름돈 문제 # 사전에 외우고 있지 않아도 풀 수 있을 가능성이 높은 문제 유형 # 주로 정렬 알고리즘과 함께 나오는 유형 🛠 거스름돈 문제 🔧 문제 카운터에는 거스름돈으로 줄 수 있는 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다고 가정한다. 손님에게 거슬러 줘야 할 돈이 N원일 때 거슬러줘야 할 동전의 최소 개수를 구하라. 단, 거슬러 줘야 할 돈 N은 항상 10의 배수이다. 🔧 아이디어 1) 거스름돈으로 줄 수 있는 단위 중 가장 큰 단위부터 돈을 거슬러준다. - 이 문제 상황에서는 500원부터 거슬러 줄 수 있는 최대한으로 거슬러 준다. - 1260원을 거슬러줘야 한다고 가정해보자. 화폐단위 500 100 50 10 손님이 받은 개수 2 0 0 0 - 500원을 최대한 많이 거슬러줬을 때, .. 2022. 5. 2.