'삼성 SW 역량 테스트' 기출 문제 입니다. 😀
문제 👉 14888번: 연산자 끼워넣기
1. 문제
- N개의 수로 이루어진 배열과 수와 수 사이에 끼어넣을 수 있는 N-1개의 연산자가 주어진다.
- 연산자는 덧셈(+), 뺄셈(-), 곱셈(×), 나눗셈(÷)으로만 이루어져 있다.
- 연산자는 수와 수 사이에 하나만 들어간다.
- 주어진 N개의 수와 N-1개의 연산자를 통해 구할 수 있는 최대값과 최솟값을 출력한다.
2. 풀이
브루트포스
를 이용한 문제 풀이
- 연산자의 개수를 배열로 저장
- 브루트포스를 통해 주어진 수의 개수를 모두 사용하였을 때 최소 최대 값 저장
3. 코드
N = int(input())
A = list(map(int, input().split()))
op = list(map(int, input().split()))
mx, mn = -1e9, 1e9 # 십억
def solution():
def bf(idx, val, add, sub, mul, div):
global mx, mn
if idx == N:
mx = max(mx, val)
mn = min(mn, val)
return
if add:
bf(idx+1, val+A[idx], add-1, sub, mul, div)
if sub:
bf(idx+1, val-A[idx], add, sub-1, mul, div)
if mul:
bf(idx+1, val*A[idx], add, sub, mul-1, div)
if div:
bf(idx+1, val//A[idx] if val >= 0 else -((-val)//A[idx]), add, sub, mul, div-1)
bf(1, A[0], op[0], op[1], op[2], op[3])
print(mx)
print(mn)
solution()
- 결과는 92 ms 나왔다.
References
🏋🏻 개인적으로 공부한 내용을 기록하고 있습니다.
잘못된 부분이 있다면 과감하게 지적해주세요!! 🏋
'Coding Test > BOJ' 카테고리의 다른 글
[백준] 14889 - 스타트와 링크 [Python(파이썬)] (0) | 2021.11.22 |
---|---|
[백준] 14503 - 로봇 청소기 [Python(파이썬)] (0) | 2021.11.22 |
[백준] 14502 - 연구소 [Python(파이썬)] (0) | 2021.11.22 |
댓글