일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- PyQt
- 원서읽기
- 백준
- English
- 코테 대비
- englishbook
- D4
- dfs
- 알고리즘
- 원서
- MySQL
- sw expert academy
- 코딩테스트
- STUDYENGLISH
- 직무면접
- swexpertacademy
- sw expert
- 완전탐색
- 프로그래머스
- SQL
- BFS
- 쉬운 알고리즘 문제
- 코테 준비
- 원서읽자
- 삼성
- 알고리즘 문제
- the midnight library
- 코테
- readingbook
- nightroutine
- Today
- Total
목록브루트포스 (3)
시나브로
Solution 데이터를 받아 map에 저장합니다 (0.0)으로 dfs함수를 호출합니다. 문제에서 무조건 0,0은 치즈가 없다고 하였기에 이점을 이용하여 공기에 접촉된 치즈를 찾습니다. 찾은 치즈는 list 큐에 저장합니다. 여기서 포인트는 각 치즈의 시간을 알아야 된다는 것입니다. 저는 이를 해결하기위해 자료구조 큐와 (1110,1110)이라는 값을 넣어줬습니다. => 큐를 이용하면 순차적으로 pop이 되어 순서를 지킬 수 있습니다. 한번 dfs함수를 돌면서 들어온 값들은 동일한 시간을 가지고 있기에 이후 값과 섞이지 않고 관리할 수 있습니다. 하지만, 이렇게 한다고 해도 시간이 변경되는 기준점을 찾을 수 없습니다. 그래서 저는 임의값 (1110,1110)을 넣어 시간이 변경되는 시점을 체크하였습니다...
이 문제는 전형적인 DFS/BFS 완전탐색 문제이다. Solution 값을 입력 받는다. 여기서 값이 1인 인덱스를 벡터 stack에 입력한다. 벡터 stack이 빌때까지 while문을 돌면서 dfs 함수를 호출한다. 호출할 때는 새로운 단지를 발견한 것이기에 answer함수에 새로운 단지를 찾았다는 뜻으로 push_back으로 값을 넣어준다. dfs함수에서는 4방향을 보며 1일 경우, 재귀호출을 해준다. => 여기서 유의점은 범위체크이다. 인덱스가 배열을 범위를 넘어서면 무조건 오류가 나기때문에 귀찮더라도 범위체크를 해줘야한다. 재귀호출하면서 집의 갯수를 세야된다. 그렇기에 새로운 집에 방문할때마다 answer의 마지막 요소에 +1를 해준다. 여기서 왜 마지막 요소인가하면, 동시에 여러단지를 검색하지않..
전체 경우의 수를 탐색하였다. 3개의 카드를 뽑기 때문에 for문 3개를 이용하였다. #include #include #include #include using namespace std; int list[300010] = { 0 }; int main(void) { freopen("inp.inp", "r", stdin); freopen("out.out", "w", stdout); int n, m; scanf("%d %d", &n, &m); for (int i = 0; i < n; i++) { scanf("%d", &list[i]); } int max = 0; int box = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (i != j..