Loading...

그리디 알고리즘 연습하기2 -잃어버린 괄호-

1. 문제 1541번: 잃어버린 괄호 (acmicpc.net) 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 수식에 괄호를 쳐서 결과를 최소로 만드는 문제 2. 풀이 수식에 +,-만 나온다는 점을 생각하면.. 이 수식이 최소가 될려면?? +를 먼저 계산해서, 각 항을 최대로 만들어줘야한다. 그래야 -에 의해 최소가 되겠지 그래서 -로 수식을 split해주고... split된 리스트를 순회해서... 각 원소를 int()로 바꿔본다. int()로 바꿀때 에러가 나거나 나지 않거나 둘중 하나다. 에러가 나지..

탐욕적으로 생각하기 연습 -소인수분해 말고 인수분해하기-

1. 문제 2777번: 숫자 놀이 (acmicpc.net) 2777번: 숫자 놀이 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 양의 정수 N이 주어진다. (1 7: print(-1) continue else: prime[n] += 1 a,b = divmod(prime[2],3) if b == 2: b = 1 elif a == 2 and b == 0: a = 1 c,d = divmod(prime[3],2) answer = a+b+c+d+prime[5]+prime[7] print(answer) 2와 3의 경우에 2를 3번 곱한 8까지 압축시켜야하고 3의 경우 2번 곱한 9까지 압축시켜야하고 5,7은 그대로 두면 되고 근데 또 압축이 가능한 경우가 2*..

탐욕적인 사람 되기 -정수 a를 k로 만들기 문제-

1. 문제 25418번: 정수 a를 k로 만들기 (acmicpc.net) 25418번: 정수 a를 k로 만들기 7(A), 8(연산 1), 9(연산 1), 18(연산 2), 19(연산 1), 38(연산 2), 76(연산 2), 77(연산 1)이 최소 연산이므로 정답은 7이다. www.acmicpc.net 정수 a에 1을 더하거나 2를 곱해서 k를 만들때, 연산 횟수의 최솟값을 구하는 문제 2. 풀이1(BFS) 이 문제의 기본은 BFS로 푸는 것이다 정수 a에서 시작해서, delta 배열은 1,2가 있고 1이 나오면 a + 1에 가서 범위를 벗어난건지, 이미 방문했는지 검사 2가 나오면 2a에 가서 범위를 벗어난건지, 이미 방문했는지 검사 from collections import deque def bfs(..

탐욕적으로 생각하기 연습 -팩토리얼 분해-

1. 문제 2057번: 팩토리얼 분해 (acmicpc.net) 2057번: 팩토리얼 분해 음 아닌 정수 N이 주어졌을 때, 이 수를 서로 다른 정수 M(M ≥ 1)개의 팩토리얼의 합으로 나타낼 수 있는지 알아내는 프로그램을 작성하시오. 예를 들어 2=0!+1!로 나타낼 수 있지만, 5는 이와 같은 www.acmicpc.net 주어진 정수가 여러개의 팩토리얼의 합으로 나뉠 수 있는지 검사하는 문제 2. 풀이1 실버 5인데 왤케 어렵냐... 그리디 알고리즘이 확실히 경험이 없긴한가봐 내 해법은 일단.. 어떤 정수 N을 팩토리얼로 분해한다고 하면... 당연히 팩토리얼 값은 N보다 작아야 할 것이다 그래서 N보다 작은 팩토리얼을 일단 모두 구해놓는다 from sys import stdin n = int(stdi..

그리디 알고리즘 - 탐욕적으로 생각하게 연습하기1(11508 2+1세일, 1789 수들의 합)

1. 문제1 11508번: 2+1 세일 (acmicpc.net) 11508번: 2+1 세일 KSG 편의점에서는 과일우유, 드링킹요구르트 등의 유제품을 '2+1 세일'하는 행사를 하고 있습니다. KSG 편의점에서 유제품 3개를 한 번에 산다면 그중에서 가장 싼 것은 무료로 지불하고 나머지 두 www.acmicpc.net 주어진 유제품을 3개 단위로 살때, 3개중에서 가장 싼 것은 무료로 살 수 있다면 최소 비용으로 구매하는 방법은..? 2. 풀이1 최대한 비싼 가격들을 지불하지 않게하면 될것 같다 유제품 가격을 받아서 가장 비싼 가격으로 내림차순 정렬한 다음에 인덱스로 cost_list를 순회해서 3의 배수가 될때 반복문을 continue시키고 3의 배수가 아니면 cost에 더해주는 방식으로 하면 될 것 ..

2022. 10. 30. 15:16

경이로운 그리디 알고리즘1 -만들 수 없는 합의 최솟값-

1. 문제 자연수로 이루어진 어떤 수열이 주어질때, 이 수열의 모든 부분수열의 합을 생각해보자 이때 불가능한 합의 최솟값을 구해본다면? 예를 들어 s = [5,1,2]이면, 1,2,3,5,6,7,8은 만들 수 있는데 4를 만들 수가 없다  2. 알고리즘 2-1) 수열을 오름차순으로 정렬한다 2-2) sum = 0로 초기화한다 2-3) 수열을 하나씩 순회해서 그것을 x라고 하자.  sum+1을 만들 수 있는지 확인해본다.  2-4) sum+1 >= x이면 sum+1까지 만들 수 있다. 그러면, sum + x를 sum으로 갱신한다. 2-5) sum+1  이것만 보면 아무리 생각해도 와닿지는 않는다 어떻게 보면 경이롭기까지하다.  진짜 이게 가능한건가? 여러가지 풀이를 보면서 이해해보도록 노력하자  3. 예시..