목록Algorithm (428)
Mini
https://www.acmicpc.net/problem/17135 17135번: 캐슬 디펜스 첫째 줄에 격자판 행의 수 N, 열의 수 M, 궁수의 공격 거리 제한 D가 주어진다. 둘째 줄부터 N개의 줄에는 격자판의 상태가 주어진다. 0은 빈 칸, 1은 적이 있는 칸이다. www.acmicpc.net 1. M칸중에 궁수자리 3개뽑기 = mC3 2.0~M-1까지 배열생성 => 조합의 재료 3. 0~M-1중에서 3개뽑아서 조합생성 -> result에 저장 4. map :: 맨마지막줄 result인덱스에 궁수(2)저장 5. allZero가 될때까지 attack,move반복 import java.io.BufferedReader; import java.io.IOException; import java.io.Inp..
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15OZ4qAPICFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 고객들 좌표를 배열에 저장(인덱스 : 0~ N-1) ex) 고객이 3명이다.(0번고객, 1번고객, 2번고객) 2. 0,1,2 가지고 순열만듬 3. 그 순열을 result에 저장 4.result를 가지고 dfs // result[depth] => 고객배열의 인덱스로 사용 5. 현재depth와 현재depth+1과 거리계산 -> 종료조건:depth==N-1 6. depth+1, 거리계산하면서 dfs..
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWAe7XSKfUUDFAUw SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 1,2,4 가 들어오면 순열을 만들어준다. ex)1,2,4 / 1,4,2 ...... 2. 그 순열을 가지고 dfs를 돈다 3.dfs : (1,2,4)에 대해 왼쪽,오른쪽 분기로 dfs2개 돌린다. 3-1 : 이때 depth를 인덱스로 사용하라 3-2 : left 유망X -> return (가지치기) 3-3: depth==3 -> return, 더탐색X, 정답++ import java.io.B..
순열 서로 다른 n개의 원소 중에서 "중복을 허락하지 않고", "순서를 생각"하며 r개를 일렬로 나열하는 수열 출처: https://data-make.tistory.com/493 [Data Makes Our Future:티스토리] static void perm(int depth) { if(depth==N) { //System.out.println(Arrays.toString(result)); //return result; return; } for(int i=0;i
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRDL1aeugDFAUo SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. BC->생성자 : 그림에 표시된 범위의 좌표를 List에 추가 2. 리스트를 돌면서 A의 좌표와 일치된게 있다 -> BC범위 안이다 -> 기계의x,y좌표(유일성 => 식별용), power 저장, 내림차순 정렬 3. 합 갱신 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; imp..
https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 1.최대사용가능 5의 수 구하기 == 기준 2. 사용가능5의 갯수를 1씩 줄여가며 최대~0까지 반복 - 함수 1.사용한5만큼 N에서 빼줌 2. 나머지가지고 3씩빼면서 카운트++ 3. N이 0이면 가능한것임. possible=true, 정답갱신 - 출력 1. possibe? : answer : -1 import java.io.BufferedReader; import java.io.IOException; imp..
https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 1. 정렬되있음->뒤에서부터 탐욕적으로 탐색 2. K보다 작거나 같은 최대값 선택 3.반복적으로 빼고, 카운트++ 4.K==0이면 브레이크, 답 출력 5.현재 선택된값이 K보다 커지면 다시 탐욕적 탐색 , 3번으로가서 반복 import java.io.BufferedReader; import java.io.IOException; imp..
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWIeUtVakTMDFAVH SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. nums배열 생성=>1,2,3,4,5,6,....N으로 조합만듬=>배열인덱스로 사용 2. result배열 생성=>크기가nCr의 r, ex)1,2,3에서 2개뽑으면 1,2 / 1,3 /2,3 이 됨. 3. comb(시작인덱스, 카운트=>r이되면 끝내려고) if(cnt==r) {계산, 리턴} for(i= 시작인덱스~N) { result[cnt]=nums[i] => 조합생성 comb(i+1,cnt+..