그리디(3)
-
그리디 : 숫자 카드 게임 [ 이것이 코딩테스트다 ] [ Python ]
문제 숫자 카드 게임은 여러 개의 숫자 카드 중에서 가장 높은 숫자가 쓰인 카드 한 장을 뽑는 게임이다. 단, 게임의 룰을 지키며 카드를 뽑아야 하고 룰은 다음과 같다. 1. 숫자가 쓰인 카드들이 N * M 형태로 놓여 있다. 이때 N 은 행의 개수를 의미하며, M은 열의 개수를 의미한다. 2. 먼저 뽑고자 하는 카드가 포함되어 있는 행을 선택한다. 3. 그 다음 선택된 행에 포함된 카드들 중 가장 숫자가 낮은 카드를 뽑아야 한다. 4. 따라서 처음에 카드를 골라낼 행을 선택할 때, 이후에 해당 행에서 가장 숫자가 낮은 카드를 뽑을 것을 고려하여 최종적으로 가장 높은 숫자의 카드를 뽑을 수 있도록 전략을 세워야 한다. N + + + [3, 1, 2] + [4, 1, 4] + M [2, 2, 2] + 여기..
2023.04.19 -
그리디 : 큰 수의 법칙 [ 이것이 코딩테스트다 ] [ Python ]
문제 다양한 수로 이루어진 배열이 있을 때 주어진 수들을 M 번 더하여 가장 큰 수를 만드는 법이다. 단, 배열의 특정한 인덱스(번호) 에 해당하는 수가 연속해서 K 번을 초과하여 더해질 수 없는 것이 이 법칙의 특징이다. 예를 들어 순서대로 2, 4, 5, 4, 6 으로 이루어진 배열이 있을 때 M 이 8이고, K 가 3이라고 가정하자. 이 경우 특정한 인덱스의 수가 연속해서 세 번까지만 더해질 수 있으므로 큰 수의 법칙에 따른 결과는 6+6+6+5+6+6+6+5 인 46 이 된다. 단 서로 다른 인덱스에 해당하는 수가 같은 경우에도 서로 다른 것으로 간주한다. 예를 들어 순서대로 3, 4, 3, 4, 3 으로 이루어진 배열이 있을 때 M 이 7 이고, K 가 2라고 가정하자. 이 경우 두 번째 원소에..
2023.04.18 -
그리디 : 거스름돈 [ 이것이 코딩테스트다 ] [ Python ]
문제 당신은 음식점의 계산을 도와주는 점원이다. 카운터에는 거스름돈으로 사용할 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다고 가정한다. 손님에게 거슬러 줘야 할 돈이 N 원일 때 거슬러 줘야 할 동전의 최소 개수를 구하라. 단, 거슬러 줘야 할 돈 N 은 항상 10의 배수이다. tip) 가장 큰 화폐 단위부터 돈을 거슬러준다. 나의 코드 n = 1260 money = [ 500, 100, 50, 10] result = 0 for i in money: result = result + (n // i) # 500원 먼저 최대로 넣음 첫 루프때 n 은 1260 i 는 500 나눈값인 2를 result 에 넣는다. n = n % i # 왼쪽 변수에 오른쪽 값을 나눈후 그 나머지를 할당한다. 첫..
2023.04.18