문제 - (https://www.acmicpc.net/problem/14502) 완전탐색으로 풀 수 있는 문제였다. 세가지 스텝으로 문제를 해결할 수 있다. 1. 3개의 벽을 세울 수 있는 모든 경우를 구한다. 2. 그 상태에서 바이러스를 퍼뜨리는 시뮬레이션 진행. 3. 진행된 결과를 보고 안전 영역의 갯수를 구한다. 번호 순서대로 내 코드의 dfs, spreadVirus, dfs의 기저부분 함수를 확인하면 된다. 📌주의할 점 벽을 세우는 부분에서 재귀를 이용할 때, 반복문 순회에 주의하자 시뮬레이션을 진행할 때, deepCopy를 이용하여 새로운 배열을 만들어 진행해도 괜찮지만 굳이 그럴 필요 없이 전역으로 tempMap배열을 만들어놔서 벽이 세워진 상태의 map을 copy하는 방법을 사용하면 공간복잡..
문제 - (https://www.acmicpc.net/problem/15684) 문제를 딱 보자마자 "와 이거 어렵겠는데?"라는 생각이 들었다. 왜냐하면 사다리를 타서 i에서 i로 가는 걸 어떻게 확인해야 할지가 막막했기 때문이다. 그런데 이 부분은 막상 구현해보니 어렵지 않았다. 내 코드에서 checkLadder() 함수를 보면 된다. 다른 사람 코드를 보니 나보다 더 간단하게 구현했지만 내 코드도 조건을 확인하는데 지장 없다. 그럼 이제 생각해볼 것이, 선을 몇 개 그어야 i에서 i로 가도록 할 수 있겠는가 이다. 보자마자 완전탐색하면 되겠다는 생각이 들었지만... 경우의 수가 너무 많다는 생각이 들었다. 그래서 잘못생각한 줄 알고 고민에 빠져있었는데, 아니나 다를까 문제에 조건이 있었다. 만약, 정..
문제 - (https://www.acmicpc.net/problem/16234) 크게 어려웠던 문제는 아니다. 문제를 다 풀고 다른 코드들을 확인해보니 BFS로 많이 풀었지만 나는 DFS가 더 편해서 DFS로 풀었다. DFS + 시뮬레이션 문제였다. 문제를 풀다가 개인적으로 뿌듯한 구현이 있었다. 바로 이부분!! // 같은 연합끼리 인구 이동 시작 int[] unions = new int[check]; int[] unionsCnt = new int[check]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (visited[i][j] == 0) continue; unions[visited[i][j]] += map[i][j]; unionsC..
- Total
- Today
- Yesterday
- Access-Control-Allow-Origin
- 큰 수 만들기
- 배열순회
- 시뮬레이션
- 코딩테스트 연습
- 구명보트
- 아기상어
- header
- withCredentials
- 프로그래머스
- 백준
- 코딩테스트
- dfs
- 코테
- 브라우저 요청
- 인구이동
- 14891
- 그리디
- 톱니바퀴
- 우선순위큐
- 재귀
- BOJ
- 16234
- 구현
- 사다리 조작
- Greedy
- 자바
- 드래곤 커브
- 완전탐색
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |