Junior-Developer
Home
  • Category (316)
    • 문제풀이 (270)
      • 백준oj (201)
      • 프로그래머스 (53)
      • 명품 자바 프로그래밍(개정4판) (11)
      • 구름 (5)
    • 알고리즘 (6)
    • Node.js (2)
    • 체크리스트 (37)
블로그 내 검색
Home

Junior-Developer

1일 1커밋! 1일 1 백준!

  • 문제풀이/백준oj

    [백준OJ] 14888번 연산자 끼워넣기

    2021. 4. 25.

    by. Hyeon-Uk

    반응형

    www.acmicpc.net/problem/14888

     

    14888번: 연산자 끼워넣기

    첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 

    www.acmicpc.net


    -풀이-

    기본적인 백트래킹을 이용하여 문제를 해결했다.

    백트래킹을 이용하여 모든 경우의 수를 다 뒤져보며, 최댓값과 최솟값을 갱신해주었다.

    문제에서 결과값과 중간값은 +10억이하 -10억 이상이라 해서 minR의 초기값을 +10억1, maxR의 초기값을 -10억1로 선언해주었다.

     

    -시간복잡도-

    모든 경우의수를 찾아보는것이므로, 분기마다 4개의 선택지가 생긴다. 따라서 O(4^n)이 된다.

     

    -코드-

    #include<iostream>
    #include<vector>
    #include<algorithm>
    using namespace std;
    
    int arr[100];
    int op[4];
    int n, maxR=-1000000001,minR=1000000001;
    
    void dfs(int ind,int sum,int n) {
    	if (ind == n) {
    		maxR = max(maxR, sum);
    		minR = min(minR, sum);
    		return;
    	}
    	for (int i = 0; i < 4; i++) {
    		if (op[i] != 0) {
    			op[i]--;
    			if (i == 0) {
    				dfs(ind + 1, sum + arr[ind],n);
    			}
    			else if (i == 1) {
    				dfs(ind + 1, sum - arr[ind],n);
    			}
    			else if (i == 2) {
    				dfs(ind + 1, sum * arr[ind],n);
    			}
    			else {
    				dfs(ind + 1, sum / arr[ind],n);
    			}
    			op[i]++;
    		}
    	}
    }
    
    int main(){
    	int n;
    	cin >> n;
    	for (int i = 0; i < n; i++) {
    		cin >> arr[i];
    	}
    	for (int i = 0; i < 4; i++) {
    		cin >> op[i];
    	}
    	dfs(1, arr[0],n);
    	cout << maxR << "\n" << minR << "\n";
    }
    
    반응형
    저작자표시 (새창열림)

    '문제풀이 > 백준oj' 카테고리의 다른 글

    [백준OJ] 14890번 경사로  (0) 2021.04.25
    [백준OJ] 14889번 스타트와 링크  (0) 2021.04.25
    [백준OJ] 14503번 로봇 청소기  (0) 2021.04.24
    [백준OJ] 14502번 연구소  (0) 2021.04.24
    [백준OJ] 14499번 주사위 굴리기  (0) 2021.04.23

    댓글

    관련글

    • [백준OJ] 14890번 경사로 2021.04.25
    • [백준OJ] 14889번 스타트와 링크 2021.04.25
    • [백준OJ] 14503번 로봇 청소기 2021.04.24
    • [백준OJ] 14502번 연구소 2021.04.24
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

Designed by Nana
블로그 이미지
Hyeon-Uk

티스토리툴바