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
- 16637
- 9095
- 인스타그램
- 1182
- 연산자 끼워넣기
- 알고리즘
- 17144
- 6603
- Ajax
- 로또
- 괄호추가하기
- 부분수열의 합
- 인스타
- 색종이 붙이기
- Java
- django
- 장고
- 17472
- 14888
- 백준
- 14502
- 17136
- 17143
- 미세먼지 안녕!
- 다리 만들기2
- 재귀
- 따라하기
- 구슬탈출2
- 좋아요
- 댓글
Archives
- Today
- Total
Be a developer
백준 14888 연산자 끼워넣기 본문
주어지는 숫자의 순서가 바뀌지 않기 때문에 연산자만 순열을 통해 풀면된다.
수의 개수가 최대 11개이므로 연산자의 개수는 최대 10개가 되어 순열로 풀 수 있는 문제이다.
브루트포스로 모든 경우의 수를 만들어 보면서 최댓값과 최솟값을 구한다.
algorithm 헤더의 minmax_element함수를 이용한다.
자세한 설명은 코드의 주석으로..
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #include <iostream> #include <algorithm> #include <vector> using namespace std; int main(int argc, char** argv) { int n; cin >> n; vector<int> v(n); vector<int> oper(4); vector<int> res;//모든 결과 값을 담기 쉽도록 배열이 아니라 vector로 선언한다. 모든 결과를 push_back 함수를 통해 넣어준 뒤 minmax_element함수로 답을 추출한다. for (int i = 0; i < n; i++)cin >> v[i];//수를 입력 받는다. for (int i = 0; i < 4; i++) cin >> oper[i];//연산자 개수를 입력받는다. vector<int> op; for (int i = 0; i < 4; i++) {//연산을 위해 각각의 operator를 저장한다. while (oper[i]) { op.push_back(i); oper[i]--; } } do { int sum = v[0]; for (int i = 0; i < op.size(); i++) { switch (op[i]) { case 0://덧셈일 경우 sum += v[i + 1]; break; case 1://뺄셈일 경우 sum -= v[i + 1]; break; case 2://곱셈일 경우 sum *= v[i + 1]; break; case 3://나눗셈일 경우 sum /= v[i + 1]; } } res.push_back(sum);//모든 결과 값을 vector에 추가한다. } while (next_permutation(op.begin(), op.end())); auto ans = minmax_element(res.begin(), res.end());//minmax쓰는 법 조심하기. auto는 선언과 동시에 초기화해야 하는 듯. printf("%d\n%d\n", *ans.second, *ans.first);//출력할 때 조심. 이름이 minmax니까 min이 first, max가 second이다. return 0; } | cs |
'알고리즘' 카테고리의 다른 글
백준 1759 암호 만들기 (0) | 2019.04.02 |
---|---|
백준 9095 1,2,3 더하기 (재귀) (0) | 2019.04.01 |
백준 6603 로또 (0) | 2019.04.01 |
백준 10971 외판원 순회 2 (0) | 2019.03.29 |
알고리즘 풀면서 참고할 사항들 (0) | 2019.03.27 |
Comments