복습 4
2020-02-27
복습 4
설탕배달부터
까먹은 문제
-
설탕배달 - Math
n,m으로 k를 의 최소의 개수를 맞추는 방식
-
2XN 타일링 - DP
dp는 일단 간단한 점화식부터 생각해보자
-
토마토 2 - BFS
3차원 배열 이용하는 법
int y = Integer.parseInt(n[0]); // 열 -> 가로로 y개라는 뜻 int x = Integer.parseInt(n[1]); // 행 -> 세로로 x개라는 뜻 int z = Integer.parseInt(n[2]); // 높이 int maze[][][] = new int[z][x][y]; // 맵에 데이터 넣기 Queue<Poos> tomato = new LinkedList<>(); //행개수만큼 넣고 -> 열 -> 높이 for(int i=0;i<z;i++) { for(int j=0;j<x; j++) { //한줄씩 받아온거 행에 넣기 ->행 개수만큼 String a[] = sc.nextLine().split(" "); for(int k=0;k<y; k++) { maze[i][j][k] =Integer.parseInt(a[k]); if(maze[i][j][k] == 1) tomato.add(new Poos(j,k,i,0)); }//for - k }//for - j }//for - i
-
쉬운 계단 수 - DP
이차원 배열 이용한 문제
완벽 이해
-
성실한 개미 - Maze
dfs도 bfs도 아닌 오른쪽아니면 밑으로만 가는 문제!
-
ATM - Greedy
answer = answer + i; k = k+answer;
-
동전 0 - Greedy
동전 종류에 따라, 최소의 동전개수 구하기
-
회의실 배정 - Greedy
Arrays.sort(arr, new Comparator<int[]>(){ a[0]a[1] b[0]b[1] @Override compare(int a[], int b[]){ if(a[0]==b[0]) return a[0] - b[0]; // [0][1] -> 0번째에 맞춰 오름차순! else return a[1] - b[1]; // [0][1] -> 1번째에 맞춰 오름차순 정렬 }})
-
연결요소의 개수 - DFS
네트워크와 같은 문제, CHECK[] 까지먹지 말자
-
정수삼각형 - DP
-
거스름 돈 - Greedy
동전 종류에 따라, 최소의 동전개수 구하기
-
초콜릿 자르기 - Math
-
영역 구하기 - DFS
두 좌표가 주어졌을 때 좌표를 표시하는 방법
(2,5) (3,7)의 영역을 구하기 위해 사용한 식 for(int i=0;i<k;i++){ int lx = sc.nextInt(); int ly = sc.nextInt(); int rx = sc.nextInt(); int ry = sc.nextInt(); for(int y = ly; y<ry; y++){ for(int x= lx; x<rx; x++){ arr[y][x] = 1; } }//in for }//out for
-
연구소 - DFS
Combination과 Dfs의 콜라보
-
안전 영역 - DFS
-
포도주 시식 - DP
-
로프 - Greedy
-
연속합 - Math
-
그룹단어체커 - 문자열
-
크로아티아 알파벳 - 문자열
if(a.contains(words[i])) a = a.replaceAll(words[i], "*");
-
나이트의 이동 - BFS
-
이친수 - DP
-
30 - Greedy
- 30의 배수가 되는 가장 큰 수
- 각 자리수의 합이 3의 배수이다.
- 0의 개수가 1개 이상이다.
-
대회 or 인턴 - Greedy
-
방번호 -Math
arr[6] = Math.round(arr[6]/2.0f); // 반올림 하는 함수