일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코테 준비
- 프로그래머스
- 삼성
- nightroutine
- 원서읽자
- 코테
- PyQt
- 알고리즘
- D4
- English
- 직무면접
- sw expert
- MySQL
- 코테 대비
- 알고리즘 문제
- 백준
- the midnight library
- 원서읽기
- 코딩테스트
- 완전탐색
- swexpertacademy
- BFS
- 쉬운 알고리즘 문제
- STUDYENGLISH
- readingbook
- dfs
- SQL
- sw expert academy
- englishbook
- 원서
- Today
- Total
목록완전탐색 (16)
시나브로
단순 완전탐색보다는 조금 힘든 문제인 것 같다. Solution 먼저 데이터를 받아 map를 만든다. 여기서 min_high와 max_high를 찾는다. 이는 처음 물높이를 설정할 때 이용한다. 모든 점을 우선순위 큐에 넣어서 오름차순 정렬을 한다. => 여기서 다른 구조를 사용해도 된다. 나는 벡터를 쓸려고하다가 큐가 편할 것 같아서 큐를 사용했는데 정렬이 안되서 할 수 없이 우선순위 큐를 이용했다. 그러므로 아무 자료구조를 사용해도 좋다. 단, 구조체 정렬이 가능해야된다는 점을 유의하자. 자료량이 계속 들어오는게 아니라 자료량의 크기도 정해져있기 때문에배열도 상관없다. 높이 가장 작은 곳을 찾아 물 높이가 min_high일 때, 잠기는 지 확인하다. 잠긴다면, 잠겼다는 표시로 0으로 바꿔준다. 만약 ..
이 문제는 전형적인 DFS/BFS 완전탐색 문제이다. Solution 값을 입력 받는다. 여기서 값이 1인 인덱스를 벡터 stack에 입력한다. 벡터 stack이 빌때까지 while문을 돌면서 dfs 함수를 호출한다. 호출할 때는 새로운 단지를 발견한 것이기에 answer함수에 새로운 단지를 찾았다는 뜻으로 push_back으로 값을 넣어준다. dfs함수에서는 4방향을 보며 1일 경우, 재귀호출을 해준다. => 여기서 유의점은 범위체크이다. 인덱스가 배열을 범위를 넘어서면 무조건 오류가 나기때문에 귀찮더라도 범위체크를 해줘야한다. 재귀호출하면서 집의 갯수를 세야된다. 그렇기에 새로운 집에 방문할때마다 answer의 마지막 요소에 +1를 해준다. 여기서 왜 마지막 요소인가하면, 동시에 여러단지를 검색하지않..
조합을 이용하여 팀을 나눈다. Solution 조합을 이용해 팀을 나눈다 팀별로 연산을 한다. #include #include #include #include #include #include using namespace std; #define INF 1000000000 int main(void) { freopen("inp.inp", "r", stdin); freopen("out.out", "w", stdout); vector map; vector person; int amount = 0; cin >> amount; for (int i = 0; i < amount; i++) { vector a; map.push_back(a); person.push_back(i); for (int j = 0; j < amo..
전형적인 전체탐색 문제이다. Solution 재귀함수를 통해 벽을 세울 위치를 3개를 탐색한다. 3개가 탐색되면, 바이러스를 퍼지는 것을 시뮬레이션 돌려서 완전공간을 확인한다. Key Point 상관은 없지만, 시간을 줄이기 위해서 check함수로 통해 중복연산을 줄였다. 하지만, 이를 하지 않아도 성공할 수 있다. #include #include #include #include #include #include using namespace std; #define INF 10000000 typedef struct A { int i, j; }; vector map; int n, m; queue list; int wall_number = 0; int dx[] = { -1,0,1,0 }; int dy[] = {..