탐색(2)
-
[백준] 16198 | 에너지 모으기 | C++
풀이의 핵심은 이렇다. 0. 입력받은 에너지값들(배열 inp)을 마음껏 조작할 수 있도록 객체 하나를 복사생성해둔다(배열 cpy). 1. DFS는 처리해야 할 구슬의 순서(배열 ord)를 작성한다. 2. 순서구성이 완료되면: 계산할 에너지합 변수 선언(tmp = 0) 구슬처리(cpy조작) 위한 순서탐색(for ord): 해당순서(ord[i])의 에너지값을 사용했단 의미에서 0을 대입(cpy[ord[i]]=0) 해당순서의 이전순서(ord[i]-1)를 l, 다음순서(ord[i]+1)를 r로 선언 사용되지 않은(0이 아닌) 구슬을 찾기 위해 l, r 세팅 세팅완료된 l, r을 이용하여 tmp에 에너지 모은다. 모아둔 tmp가 res보다 크다면 res 갱신 3. 최댓값 res를 출력 0. 구슬을 사용하면 그 구..
2022.09.03 -
[백준] 숨바꼭질 | 1697 | C++
풀이의 핵심은 BFS이다. 필자는 배열 안에 걸린시간을 저장하는 방식으로 풀었다. 정답 소스코드 #include using namespace std; int n, k; int arr[100004]; queue Q; void BFS() { while(!Q.empty()) { int x=Q.front(); Q.pop(); if(x==k) return; if(x-1>=0 && x-1=0 && x+1=0 && x*2>n>>k; arr[n]=1; Q.push(n); BFS(); cout
2022.08.20