Category(152)
-
[백준] 2193 - 이친수
문제 링크https://www.acmicpc.net/problem/2193깨달은 점그냥 반복하다보니 규칙을 찾아버렸네..?import sysN = int(sys.stdin.readline())DP = [0 for _ in range(91)]if 1
2024.06.25 -
[백준] 11726 - 2×n 타일링
문제 링크https://www.acmicpc.net/problem/11726깨달은 점쉬운 dp 문제들은 어느정도 규칙성이 보여서 이제 쉽게 풀 수 있을 듯..?, 중요한 것은 이전 단계들과의 관계를 찾는 것!import sysN = int(sys.stdin.readline())DP = [0 for _ in range(1001)]if 1
2024.06.25 -
[백준] 9095 - 1, 2, 3 더하기
문제 링크https://www.acmicpc.net/problem/9095깨달은 점dp 문제는 현재의 큰 문제를 작은 문제들로 나누어 푸는데 점화식으로 해결해야할 때도 많은 것 같다.# 현재 숫자에서 1을 빼게되면, 첫 번째 이전의 숫자가 되고 2를 빼게 되면, 두 번째 이전의 숫자, 3을 빼게 되면 세 번째 이전의 숫자가 된다.# 따라서, 현재 숫자를 1,2,3으로 구성할 수 있는 수는 첫 번째, 두 번째, 세 번째 이전 숫자를 만드는 경우를 모두 더하면 된다. 따라서 점화식을 구현하면 아래와 같다. import sysiter = int(sys.stdin.readline())answer_list = [] for _ in range(iter): dp = [0 for _ in range(12)] ..
2024.06.25 -
[백준] 1463 - 1로 만들기
문제 링크https://www.acmicpc.net/problem/1463느낀점DP문제인지 판단할 때, 더 작은 문제로 나눌 수 있는지를 생각해보고 만약 DP로 풀 수 있다면, 어떻게 이전의 값을 이용하여 문제를 해결할 수 있는지 생각해보자# 목표가 되는 수까지 모든 숫자를 계산해서 저장해놓은 후, 이를 바탕으로 목표 숫자를 계산# 여기서 중요한 것은, 목표 숫자를 분해하는 것이 이전 숫자들을 이용하여 할 수 있다는 것import sysnum = int(sys.stdin.readline())# DP 테이블 초기화DP = [0] * 1000001# 다이나믹 프로그래밍 진행(bottom-up)for i in range(2, num+1): # 현재의 수에서 1을 빼는 경우 DP[i] = DP[i-1..
2024.06.25 -
[백준] 20117 - 호반우 상인의 이상한 품질 계산법
문제 링크https://www.acmicpc.net/problem/20117느낀 점어떻게 하면 최댓값을 달성할 수 있는지 생각을 잘해보면 쉽게 풀 수 있는 문제!import sysimport collectionsN = sys.stdin.readline()answer = 0quality = collections.deque(sorted(list(map(int, sys.stdin.readline().split()))))while quality: if len(quality) == 1: num_tail = quality.pop() answer += num_tail break num_head = quality.popleft() num_tail = quality...
2024.05.24 -
[백준] 1107 - 리모컨
문제 링크https://www.acmicpc.net/problem/1107느낀 점# 하나씩 숫자를 비교하면서 만들어가려고 했는데, 반복문 안의 숫자를 비교해서 끝내면 된다!!# 역시 효율적인 문제 접근 방식을 더 생각해봐야할 듯! 먼저 구현하려고 하지 말고!import sysN = int(sys.stdin.readline())M = int(sys.stdin.readline())if M > 0: deleted = list(map(int, sys.stdin.readline().split()))else: deleted = []min_num = abs(100 - N)if N == 100: print(0)else: for num in range(1000001): str_num =..
2024.05.24