Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 삼성 SW 역량 테스트
- 시뮬레이션
- 그리디
- 백트래킹
- 브루트포스
- SWEA
- 코드리뷰
- 2020 카카오 인턴십
- 월간 코드 챌린지
- Level 2
- level 1
- 백준
- pass
- 2019 KAKAO BLIND
- 부스트코스
- 스택/큐
- Level 4
- BFS
- DFS
- Level 3
- 구현
- next_permutation
- Gold 5
- 코드 리뷰
- Gold 4
- DP
- Web
- c++
- 프로그래머스
- 2020 KAKAO BLIND
Archives
- Today
- Total
Min:D's Devlog
[백준][삼성 SW 역량 테스트][Silver 1][C++] 14888 연산자 끼워넣기 본문
문제
백준 삼성 SW 역량 테스트 기출 문제 - 14888 연산자 끼워넣기 (Silver 1)
문제 풀이
접근 방식
숫자와 각 연산자의 개수가 주어질 때, 만들 수 있는 식의 결과의 최댓값과 최솟값을 구하는 문제이다.
이 문제는 어떤 연산자를 먼저 사용할 지 결정하여 최종적인 식의 결과를 구하는 문제이기 때문에,
DFS 함수를 만들어 답을 구해주었다.
DFS 함수는 연산자의 개수를 저장한 벡터와, 현재 인덱스, 현재까지의 식의 결과를 매개변수로 갖도록 하였고,
for문과 switch문을 활용하여 연산자에 맞는 결괏값을 재귀적으로 호출할 DFS의 매개변수로 넘겨주도록 하였다.
모든 연산자를 다 사용했을 때에는, 그 결괏값을 MIN과 MAX와 비교하여 최솟값과 최댓값을 구해주었다.
풀이 코드 - C++
#include <iostream>
#include <vector>
using namespace std;
int N;
int MAX = -1000000000;
int MIN = 1000000000;
vector<int> num;
void DFS(vector<int> operator_count, int now, int result) {
if (now == N - 1) {
if (result > MAX)
MAX = result;
if (result < MIN)
MIN = result;
return;
}
for (int i = 0; i < 4; i++) {
if (operator_count[i] > 0) {
operator_count[i]--;
switch (i) {
case 0:
DFS(operator_count, now + 1, result + num[now + 1]);
break;
case 1:
DFS(operator_count, now + 1, result - num[now + 1]);
break;
case 2:
DFS(operator_count, now + 1, result * num[now + 1]);
break;
case 3:
DFS(operator_count, now + 1, result / num[now + 1]);
break;
}
operator_count[i]++;
}
}
}
int main() {
cin >> N;
for (int i = 0; i < N; i++) {
int a;
cin >> a;
num.push_back(a);
}
vector<int> operator_count;
for (int i = 0; i < 4; i++) {
int a;
cin >> a;
operator_count.push_back(a);
}
DFS(operator_count, 0, num[0]);
cout << MAX << '\n' << MIN;
}
실행 결과
'알고리즘 > 백준' 카테고리의 다른 글
[백준][삼성 SW 역량 테스트][Silver 4][C++] 14501 퇴사 (0) | 2020.10.06 |
---|---|
[백준][삼성 SW 역량 테스트][Gold 5][C++] 14502 연구소 (0) | 2020.10.05 |
[백준][삼성 SW 역량 테스트][Gold 5][C++] 14503 로봇 청소기 (0) | 2020.10.02 |
[백준][삼성 SW 역량 테스트][Silver 3][C++] 14889 스타트와 링크 (0) | 2020.10.01 |
[백준][삼성 SW 역량 테스트][Silver 1][C++] 14891 톱니바퀴 (0) | 2020.09.30 |
Comments