코딩 테스트/백준(50)
-
백준 알고리즘 9095. 1, 2, 3 더하기
https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 전체 코드 import collections def merge_two_set(s1: set, s2: set): merged_set = set() for e1 in s1: for e2 in s2: merged_set.add(e1 + e2) merged_set.add(e2 + e1) return merged_set def solution(n): registered_set_table = collections.defaultdict(set) registered_set_table[1] = {(1, )} r..
2024.03.12 -
백준 알고리즘 1463. 1로 만들기
https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 전체 코드 def solution(n): memos = [0] * (n + 1) for i in range(2, n + 1): count = memos[i - 1] + 1 if i % 3 == 0: count = min(count, memos[i // 3] + 1) if i % 2 == 0: count = min(count, memos[i // 2] + 1) memos[i] = count return memos[n] N = int(input()) print(solution(N))
2024.03.12 -
백준 알고리즘 24416. 피보나치 수1
https://www.acmicpc.net/problem/24416 24416번: 알고리즘 수업 - 피보나치 수 1 오늘도 서준이는 동적 프로그래밍 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. 오늘은 n의 피보나치 수를 재귀호출과 동적 프로그래밍 www.acmicpc.net 전체 코드 n = int(input()) def fib(n): if n
2024.03.12 -
백준 알고리즘 2748. 피보나치 수 2
https://www.acmicpc.net/problem/2748 2748번: 피보나치 수 2 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 전체 코드 n = int(input()) def fib(n): if n
2024.03.12 -
백준 9663. N-Queen 문제
https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 전체 코드 class Solution: def __init__(self, n): self.n = n self.ans = 0 self.row = [0] * n def is_promising(self, x): for i in range(x): if self.row[x] == self.row[i] or abs(self.row[x] - self.row[i]) == abs(x - i): return False return..
2024.03.10 -
백준 알고리즘 15649. N과 M(1)
https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 전체 코드 def solution(n, m): results = [] def dfs(path, cur_elements): if m == len(path): results.append(path) return for e in cur_elements: next_elements = cur_elements[:] next_elements.remove(e) dfs(path + [e], next_element..
2024.03.08