문제: https://www.acmicpc.net/problem/12100 풀이 상하좌우 4가지로 이동할때의 함수를 만들고 dfs로 매번 상하좌우 전체의 경우를 구해본다. 그리고 5번째에 각 배열에서 최대의 값을 비교한다. 처음엔 단순무식하게 진행했다. 상하좌우 각 함수를 ex) 상(up)일 경우 idx=1(편의상 0말고 1부터 이동)이 0일경우, 아래의 칸들을 모두 위로 1칸씩 올린다. idx=1이 0이 아니고 idx=2의 값과 같을경우, idx=2의 값을 0으로 바꾸고 idx=1의 값을 *2한다 그리고 idx+=1 아래의 알고리즘의 문제점은 아래의 테스트케이스에서 나타났다(14%에서 틀렸습니다. 뜸). 5 2 2 4 8 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 4 8 16 -> up 진행시 4 4 8 16 32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 위의 정답결과가 아니라 아래의 결과가 나온다 2 2 4
주어진 점원들의 키의 합중 B에 가장 가깝고 B보다 크거나 같은 값을 찾는 문제이다. 점원들의 부분집합들을 dfs(백트래킹)을 통해 계산하며, 합이 B와같거나 클경우 합과 결과값중 낮은값으로 계속 갱신해준다!