BJ15683 감시
SW/알고리즘 문제풀이 2020. 2. 10. 11:40

2020.02.10 감시 Solution Input 자료 저장 : inMap을 양쪽으로 2칸씩 여유있게 선언해놓고 4방향을 6(벽)으로 덮어서 만들고 시작했다. 알고리즘 : 기본적으로 CCTV의 기준 방향을 완전탐색을 이용해 정하고 방향이 모두 정해졌을 때의 사각지대의 크기를 모두 비교하여 최소 크기를 리턴하는 방식 getResult 함수 : idx번째부터 끝까지 CCTV의 basis direction을 선택하는 재귀구조의 완전탐색 함수 getSize 함수 : 방향을 모두 선택한 getResult 함수의 기저조건에서 detectMap에 CCTV탐색을 각 방향과 CCTV의 종류에 따라 탐색하도록 만들었고 탐색이 완료된 후에 사각지대의 크기를 구하고 다시 detectMap을 초기화하여 사각지대의 크기를 re..

BJ17837 새로운게임2
SW/알고리즘 문제풀이 2020. 2. 9. 21:55

BJ17837 새로운게임2 2020.02.09 https://www.acmicpc.net/problem/17837 Solution 2차원 vector horseInfo를 이용해서 해당 칸에 있는 말들의 번호와 방향을 pair로 순서대로 담았다. 1차원 vector horse를 이용해서 k번말의 위치(r,c)를 pair로 담았다. getResult 함수 : 1000 번 돌리면서 말을 움직였을 때 4개 이상 올라가는 경우가 생기면 그때의 t를 return 해서 결과를 얻고 만약 1000번동안 없으면 -1을 리턴하는 함수. 1번 돌릴 때 1번말 ~ K번말까지 돌린다. Move 함수 : horse의 idx k 를 받아서 이동시키고 이동한 곳의 말의 수를 리턴하는 함수 1시간 반정도 소요되었는데, 문제를 잘못읽었..

BJ11401 이항계수3
SW/알고리즘 문제풀이 2020. 2. 9. 17:21

BJ11401 이항계수3 2020.02.09 자연수 N에서 K를 뽑는 경우의 수 % 1000000007 Solution1 N 팩토리얼 / (K 팩토리얼*(N-K)팩토리얼) 이렇게 나눠주는 경우는 분자,분모를 구하는 과정에서 팩토리얼 곱셈 도중 나머지를 계산하는 방식을 사용할 수가 없다. 즉, 분자와 분모가 long long의 범위를 넘어가게 된다. Solution2> nCr = n-1Cr-1 + n-1Cr 임을 이용한다. 이렇게 하면 합으로 문제가 바뀌기 때문에 합을 1000000007로 매번 나누어 줄 수 있다. (즉, 범위를 넘기지 않을 수 있다.) 그렇지만 이렇게 하면 호출의 횟수가 급격히 늘어나게 된다. (마치 피보나치 수열처럼) N의 범위가 4000000 이하이므로 시간초과가 난다. DP를 사용..