코딩 테스트/백준(50)
-
백준 알고리즘 10799. 쇠막대기
https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net 전체 코드 def solution(s: str): count = 0 stack = [] i = 0 while i < len(s): # 레이저 인경우 if (i + 1)
2024.03.08 -
백준 알고리즘 14888. 연산자 끼워넣기
https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 곱 www.acmicpc.net 전체 코드 백트래킹을 사용하는 방법 import sys class Solution: def __init__(self): self.min_value, self.max_value = sys.maxsize, -sys.maxsize def do(self, nums, operators_count): add, minus, mul, div = oper..
2024.03.08 -
백준 알고리즘 3986. 좋은 단어
https://www.acmicpc.net/problem/3986 3986번: 좋은 단어 이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에 www.acmicpc.net 전체 코드 def solution(s_list: list[str]): cnt = 0 for s in s_list: stack = [] for i in range(len(s)): if stack: if s[i] == stack[-1]: stack.pop() else: stack.append(s[i]) else: stack.append(s[i]) if not stack: cnt += 1 return cnt t ..
2024.03.08 -
백준 알고리즘 9012. 괄호
https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 전체 코드 def find_vps(s: str): if len(s) < 2: return False stack = [] for ch in s: if ch == '(': stack.append(ch) elif ch == ')': if len(stack) == 0: return False # '('가 존재할 경우 pop한다. stack.pop() # stack에 '('가..
2024.03.08 -
백준 알고리즘 - 2805. 나무 자르기
https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 전체 풀이 # Code def solution(trees: list, m): result = 0 low, high = 1, sum(trees) while low mid]) if tree_amount >= m: low = mid + 1 result = mid else: high = mid - 1 return result # --- submit --- n, m ..
2024.03.06 -
백준 알고리즘 - 1654. 랜선 자르기
https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 전체 코드 # Code def solution(lan_length_list: list, n): max_length = max(lan_length_list) result_length = 0 low, high = 0, max_length while low = n: # 더 많이 개수가 남았다면 길이를 좀더 키워야한다. result_length = mid low = mid +..
2024.03.06