Skip to content

Commit b134f62

Browse files
committed
[BOJ] #14888. 연산자 끼워넣기 / 실버1 / 60분 / 힌트
1 parent 8946291 commit b134f62

File tree

2 files changed

+80
-2
lines changed

2 files changed

+80
-2
lines changed
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
import sys
2+
input = sys.stdin.readline
3+
4+
n = int(input())
5+
nums = list(map(int, input().strip().split()))
6+
ops = list(map(int, input().strip().split()))
7+
8+
# 최댓값과 최솟값을 구하기 위해 초기값 설정
9+
max_result = -int(1e9)
10+
min_result = int(1e9)
11+
12+
def dfs(nums, index, current_result, plus, minus, multiply, divide):
13+
global max_result, min_result
14+
15+
if index == len(nums):
16+
# 모든 숫자를 다 사용했으면 최댓값과 최솟값 갱신
17+
max_result = max(max_result, current_result)
18+
min_result = min(min_result, current_result)
19+
return
20+
21+
if plus > 0:
22+
dfs(nums, index + 1, current_result + nums[index], plus - 1, minus, multiply, divide)
23+
if minus > 0:
24+
dfs(nums, index + 1, current_result - nums[index], plus, minus - 1, multiply, divide)
25+
if multiply > 0:
26+
dfs(nums, index + 1, current_result * nums[index], plus, minus, multiply - 1, divide)
27+
if divide > 0:
28+
if current_result < 0:
29+
# 음수일 때의 나눗셈 처리
30+
dfs(nums, index + 1, -(-current_result // nums[index]), plus, minus, multiply, divide - 1)
31+
else:
32+
dfs(nums, index + 1, current_result // nums[index], plus, minus, multiply, divide - 1)
33+
34+
35+
36+
# 초기값은 첫 번째 숫자, index는 1부터 시작
37+
dfs(nums, 1, nums[0], ops[0], ops[1], ops[2], ops[3])
38+
39+
print(max_result)
40+
print(min_result)
41+
42+
'''
43+
# 3달 전 풀이
44+
45+
# 입력받기
46+
n = int(input()) # 수의 개수
47+
nums = list(map(int, input().split())) # 수열
48+
operator = list(map(int, input().split()))
49+
50+
# 최솟값, 최댓값 초기화
51+
maxValue = int(-1e9)
52+
minValue = int(1e9)
53+
54+
def calculator(idx, res, add, sub, prd, div):
55+
global minValue, maxValue
56+
57+
if idx == n:
58+
# 최솟값과 최댓값 갱신
59+
maxValue = max(maxValue, res)
60+
minValue = min(minValue, res)
61+
return
62+
63+
if add > 0:
64+
calculator(idx + 1, res + nums[idx], add-1, sub, prd, div)
65+
66+
if sub > 0:
67+
calculator(idx + 1, res - nums[idx], add, sub-1, prd, div)
68+
69+
if prd > 0:
70+
calculator(idx + 1, res * nums[idx], add, sub, prd-1, div)
71+
72+
if div > 0:
73+
calculator(idx + 1, int(res / nums[idx]), add, sub, prd, div-1)
74+
75+
calculator(1, nums[0], operator[0], operator[1], operator[2], operator[3])
76+
print(maxValue)
77+
print(minValue)
78+
'''

minjeong/HashMap/2024-06-27-[PGS]-전화번호목록.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@ def solution(phone_book):
99
prefix = number[:i]
1010
# prefix가 prefixes에 존재하는지 확인한다.
1111
if prefix in prefixes:
12-
return False
13-
return True
12+
return False # 존재하면 바로 False
13+
return True # 모든 번호에 대해 접두어가 발견되지 않는다면 True 반환

0 commit comments

Comments
 (0)