3번은 10^9 보고 탈출했고
4번은 그냥 백트래킹으로 완전탐색 시 매번 파이프 종류 고르면 3^10이니까 2중으로 dfs 돌림
1. 파이프 고르는 dfs. 아래 dfs 결과 활용 (3^10)
2. 첫 노드에서 현재 파이프 상태로 접근 가능한 노드 체크하는 dfs.
재귀로 구현하고 인자로 기존 감염된 노드 set 받아서, 이미 감염된 거 + 새로 감염 가능한 거 모은 set 을 만들어 다음 단계에서 쓸 수 있게 인자로 (감염됐거나 파이프 번호랑 같으면 엣지가 연결된 걸로 취급)
(복잡도 : 노드 + 엣지 개수)
그래서 최종적으로 가장 많은 노드 감염시키면 그거 리턴
5번은
1. 두 박스가 겹치는지
2. 겹치면 두 번째 박스를 얼마나 밀어야하는지
체크해서 밀어야 하는 dxdy 리턴하는 함수 만들고
push (boxIndex, dx, dy)함수 짜서 해결함
-> 1. dx / dy만큼 밀기
-> 2. 밀었을때 겹치면, 그놈을 밀어야 하는 dx dy로 push 재귀
이렇게 하면 밀 거 없을 때까지 쭉 밀고 해결되더라
6번은
bfs 발판마다 돌려서 각각의 거리 매트릭스 계산 후
(같은 층 아니면 a에서 엘베 까지 거리 + 층 차이 + b에서 엘베까지 거리)
외판원식으로 dp해서 풀라고 했는데 하다가 시간 초과…
대충 상태가 2^15개고 노드가 15개니까 충분했을 텐데 아쉽네
풀었는지부터 물어봐라 이 싸가지 좀 보게
3^10아니엇너 3^20을 어케함
아 맞네
3은 케이스 나눠서 dp