본문 바로가기

백준/실버9

백준1463. 1로 만들기 - Python, DP, DFS 출처 : https://www.acmicpc.net/problem/1463 코드 & 풀이dp 방식import sysdata = sys.stdin.read().splitlines()N = int(data[0])dp = [0] * (N + 1) # dp[i]: i를 1로 만드는 최소 연산 횟수for i in range(2, N + 1): dp[i] = dp[i - 1] + 1 # 1을 빼는 연산 if i % 2 == 0: dp[i] = min(dp[i], dp[i // 2] + 1) if i % 3 == 0: dp[i] = min(dp[i], dp[i // 3] + 1)print(dp[N]) 이 문제의 카테고리인 DP로 푸는 방식입니다. 일단 1을 빼는 경.. 2025. 5. 11.
백준9012. 괄호 - Python, stack 출처 : https://www.acmicpc.net/problem/9012 코드 & 풀이 import sys# 입력 처리data = sys.stdin.read().splitlines()N = int(data.pop(0))def VPS(pstring): stack = [] for parenthesis in pstring: if parenthesis == ')': if not stack: return "NO" stack.pop() else: stack.append(parenthesis) return "NO" if stack else "YES"answer = ""for _ in.. 2025. 5. 10.
백준1021. 회전하는 큐 - Python, deque, rotate 출처 : https://www.acmicpc.net/problem/1021 코드 & 풀이 import sysfrom collections import deque# 입력 처리data = sys.stdin.read().splitlines()N, M = map(int, data.pop(0).split(" "))dq = deque()for i in range(1, N + 1): dq.append(i)targets = [int(i) for i in list(data.pop(0).split(" "))]answer = 0for target in targets: idx = dq.index(target) size = len(dq) if idx == 0: dq.popleft() .. 2025. 5. 9.
로봇 - Python, 구현 출처 : https://www.acmicpc.net/problem/13901  코드 import sys# 입력 처리data = sys.stdin.read().splitlines()R, C = map(int, data.pop(0).split(" "))room = [[False] * C for _ in range(R)]# 장애물 설치k = int(data.pop(0))for _ in range(k): br, bc = map(int, data.pop(0).split(" ")) room[br][bc] = Truer, c = map(int, data.pop(0).split(" "))commands = list(map(int, data.pop(0).split()))# 1 : up, 2 : down, 3 .. 2025. 3. 26.
트리의 부모 찾기 - Python, BFS, 재귀 깊이 제한 키우기 출처 : https://www.acmicpc.net/problem/11725   코드 import sysfrom collections import deque, defaultdictdef find_parents(N, edges): graph = defaultdict(list) for a, b in edges: graph[a].append(b) graph[b].append(a) parent = [0] * (N + 1) visited = [False] * (N + 1) q = deque([1]) visited[1] = True while q: node = q.popleft() for neighbor in graph[node.. 2025. 3. 7.
백준 > 9711번 > 피보나치 - JAVA 문제 피보나치 수열은 아래와 같이 표현된다. 1, 1, 2, 3, 5, 8, 13, 21, 34, ... 각 숫자는 앞의 두 숫자의 합으로 나타내는 것을 알 수 있다. P와 Q 그리고 n이 주어질 때, P번째 피보나치 숫자를 Q로 나눈 나머지를 구하여라. 입력 첫 번째 라인에는 정수 T개의 테스트 케이스가 주어진다. 각 테스트 케이스는 정수 P와 Q가 주어진다. 출력 각 테스트 케이스마다 "Case #x: M" 형식으로 출력한다. x는 테스트 케이스 번호(1부터 시작), M은 P번째 피보나치 숫자를 Q로 나눈 나머지이다. 제한 1 ≤ P ≤ 10,000 1 ≤ Q ≤ 2,000,000,000 코드 import java.math.BigInteger; import java.util.*; import java.. 2023. 6. 2.