greedy4 [Algorithm] (이코테) Greedy - 거스름 돈 (Python/파이썬) ▶ 문제 설명 당신은 음식점의 계산을 도와주는 점원이다. 카운터에는 거스름돈으로 사용할 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다고 가정한다. 손님에게 거슬러 줘야 할 돈이 N원일 때 거슬러 줘야 할 동전의 최소 개수를 구하라. 단, 거슬러 줘야 할 돈은 항상 10의 배수이다. ▶ 시간 복잡도 작성한 코드를 보면 화폐의 종류만큼 반복을 수행해야 한다는 것을 알 수 있다. 화폐의 종류가 K개라고 할 때 아래 소스코드의 시간 복잡도는 O(K) 이다. 참고로 시간 복잡도에서 거슬러 주어야 할 돈 N은 찾아볼 수 없는 것을 알 수 있다. 즉, 이 알고리즘의 시간 복잡도는 동전의 총 종류에만 영향을 받고, 거슬러 줘야하는 금액의 크기와는 무관하다는 것을 알 수 있다. ▶ Code n = 12.. Developer/Algorithm 2023. 3. 5. [Algorithm] (이코테) Greedy - 모험가 길드 (Python/파이썬) ▶ 문제 설명 한 마을에 모험가가 N명 있습니다. 모험가 길드에서는 N명의 모험가를 대상으로 '공포도'를 측정했는데, '공포도'가 높은 모험가는 쉽게 공포를 느껴 위험 상황에서 제대로 대처할 능력이 떨어집니다. 모험가 길드장인 동빈이는 모험가 그룹을 안전하게 구성하고자 공포도가 X인 모험가는 반드시 X명 이상으로 구성한 모험가 그룹에 참여해야 여행을 떠날 수 있도록 규정했습니다. 동빈이는 최대 몇개의 모험가 그룹을 만들 수 있는지 궁금합니다. 동빈이를 위해 N명의 모험가에 대한 정보가 주어졌을 때, 여행을 떠날 수 있는 그룹 수의 최댓값을 구하는 프로그램을 작성하세요. 예를 들어 N=5이고, 각 모험가의 공포도가 다음과 같다고 가정합시다. 2 3 1 2 2 이때 그룹 1에 공포도가 1, 2, 3인 모험가.. Developer/Algorithm 2023. 3. 5. [Algorithm] (이코테) Greedy - 곱하기 혹은 더하기 (Python/파이썬) ▶ 문제 설명 각 자리가 숫자(0부터 9)로만 이루어진 문자열 S가 주어졌을 때, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 'X' 혹은 '+' 연산자를 넣어 결과적으로 만들어질 수 있는 가장 큰 수를 구하는 프로그램을 작성하세요. 단, +보다 X를 먼저 계산하는 일반적인 방식과는 달리, 모든 연산은 왼쪽에서부터 순서대로 이루어진다고 가정합니다. 예를 들어 02984라는 문자열이 주어지면, 만들어질 수 있는 가장 큰 수는 (((( 0 + 2 ) x 9) x 8) x 4) = 576 입니다. 또한, 만들어질 수 있는 가장 큰 수는 항상 20억 이하의 정수가 되도록 입력이 주어집니다. ▶ 입력 조건 첫째 줄에 여러 개의 숫자로 구성된 하나의 문자열 S가 주어집니다. (1 Developer/Algorithm 2023. 3. 5. [Algorithm] (이코테) Greedy - 1이 될 때까지 (Python/파이썬) ▶ 문제 설명 어떠한 수 N이 1이 될 때까지 다음 두 과정 중 하나를 반복해서 수행한다. 두 과정은 아래와 같다. N에서 1을 뺀다. N을 K로 나눈다. (단, 나눌 수 있는 경우만 해당된다.) 예를 들어서 N이 17이고, K가 4라면 처음에는 나눌 수 없으므로 1을 뺀다. 그 뒤 16이 되면 K값 4로 나눌 수 있기 때문에 나누어준다. 그러면 4가 되는데 또 K값으로 나눠줄 수 있기 때문에 나눠주면 1 이므로 종료된다. 이때 결과는 총 3번 과정을 수행했으므로 3을 출력하면 된다. ▶ 입력 조건 첫째 줄에 N(2 Developer/Algorithm 2023. 3. 5. 이전 1 다음