코딩테스트/백준

[백준] 14888.연산자 끼워넣기 (Swift)

도지대디 2022. 7. 7. 00:26

[백준] 14888.연산자 끼워넣기 (Swift)

https://www.acmicpc.net/problem/14888

 

14888번: 연산자 끼워넣기

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

www.acmicpc.net

풀이

백트래킹으로 해결할 수 있는 문제입니다.

 

각 연산자의 개수가 들어있는 배열을 입력받고 나서 백트래킹을 이용해 모든 경우의 수를 탐색합니다.

 

연산자를 이용해 계산한 값과 현재 몇 번째 연산을 진행하는지에 대한 정수를 메소드 인자로 하여 재귀함수를 작성합니다.

 

연산자 배열을 탐색하며 값이 존재한다면 해당 연산자로 연산을 수행합니다. 한번 연산을 수행한 연산자는 값을 1 만큼 감소시킵니다.

 

연산 횟수가 모두 채워진다면, 연산이 끝난 값과 기존에 있던 최대값, 최소값을 비교하여 알맞은 값을 대입합니다.

코드