- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- dynamic programming
- 공연
- Visual Studio Code
- BOJ
- cube sound
- C++
- sw expert academy
- Algorithm
- 넓이 우선 탐색
- 춤
- dp
- filezila server
- 백준
- 시뮬레이션
- BFS
- 동적계획법
- ubuntu
- dfs
- 다이나믹 프로그래밍
- 삼성 알고리즘
- 비주얼 스튜디오 코드
- apache
- baek joon
- 우분투
- 아파치
- 그래프
- simulation
- 알고리즘
- 배틀
- Graph
목록dfs (3)
댄코 - 댄싱코딩
문제보기두단계로 나눠서 풀이했다.1.dfs로 사람들이 1번 계단으로 갈지 2번 계단으로 갈지 결정하는 모든 경우의 수를 도출2. 도출된 경우의 수로 cur변수를 1씩 증가시키며 계단에 도착하는지 검사-계단에 도착시 계단 높이 + 1을 계단 벡터(stairPool)에 push (계단에 도착 후 1분뒤 내려가기 시작하므로)-계단에 사람이 있다면 한칸씩 내려감-모든 사람이 내려갈때까지 반복 처음에 50개의 테스트 케이스 중 49개의 테스트 케이스만 맞아서 답답했다. 아마도 계단에 내려가는 사람이 3명으로 꽉 차서 대기하는 사람이 있을 때,어떤 사람이 계단 내려가기를 완료한 시점에서 대기하던 사람이 바로 내려갈 수 있어야하는데 그부분을 처리하지 못해서 그런것같다. #include #include #include..
문제보기"두 원이 인접하려면 두원의 반지름의 합이 두 원의 중심사이의 거리보다 크거나 같아야한다" 라는 조건으로 우선 진영끼리 인접하고 있는지 알 수 있는 인접리스트/행렬을 만든 후 BFS/DFS를 돌려서 문제를 해결한다. #include #include #include #include using namespace std; float getDistance(pair n, pair m){ return (n.first - m.first) * (n.first - m.first) + (n.second - m.second) * (n.second - m.second);} int countCircleGroup(){ queue q; vector vec; int r[3001]; vector link[3001]; int c..
그래프에 있는 사이클을 구하는 문제다.i번째 인덱스를 고정해놓고 1 부터 검사한다. j = arr[i]로 초기화하고 이때 j(다음으로 이어질 숫자) 와 i(사이클의 첫번째 숫자)가 같을 때까지 j = arr[j]로 업데이트한다. 검사한 인덱스 에는 1을 대입해 중복 검사를 하지 않도록 한다. j 와 i 가 같아지면 순열 사이클이 형성된것이므로 res에 1을 추가한다. #include using namespace std; int main(){ int T,N; int arr[1000]; int check[1000] = {}; int j = 0,res = 0; scanf("%d",&T); while(T > 0){ res = 0; j = 0; scanf("%d",&N); for(int i = 1;i