GreatAlgorithm-Study / AlgorithmStudy

🌟알고리즘 대장정🌟
6 stars 4 forks source link

[3주차_월요일] 디버깅 #23

Closed Jewan1120 closed 1 month ago

Jewan1120 commented 2 months ago
yeongleej commented 2 months ago

🤔 시간복잡도 고려사항

시뮬레이션 문제, 특이사항 X

💡 풀이 아이디어

baexxbin commented 2 months ago

🤔 시간복잡도 고려사항


💡 풀이 아이디어


성공했을 경우에도 상태 되돌려주기

Jewan1120 commented 2 months ago

🤔 시간복잡도 고려사항

💡 풀이 아이디어

KodaHye commented 2 months ago

🤔 시간복잡도 고려사항

💡 풀이 아이디어 (1) Powerset 이용

(2) 조합 이용

icegosimperson commented 1 month ago

🤔 시간복잡도 고려사항 변수 값이 작아서 고려X

💡 풀이 아이디어

  1. 버그를 고치기 위해 필요한 메모리 유실선 개수의 최솟값 출력하는 문제
  2. 사다리 오른쪽 이동 가능, 왼쪽 이동 가능 상태 초기값 설정
    map[a][b] = 1; // 사다리 오른쪽 이동 가능
    map[a][b+1] = 2; // 사다리 왼쪽 이동 가능 (오른쪽으로 이동한 상태이므로 2로 표현)
  3. dfs 가로선(메모리 유실선)이 추가되지 않았다면
  4. 가로선 추가 후 재귀 호출, 백트래킹으로 가로선 제거
yeahdy commented 1 month ago

🤔 시간복잡도 고려사항

💡 풀이 아이디어 ※ 코드 작성 전 문제를 풀기 위해 필요한 조건에 대해 생각했는데, 조건을 구하기 위한 아이디어가 전혀 안떠올라서 해설을 참고했습니다. 해설을 통해 왜 이런 방법으로 문제를 풀었는지에 대해 적었습니다.

유실선을 추가하는 기준? 왜 조합 알고리즘인지?

  1. 알맞는 유신선인지는 추가한 후에 확인 가능하기 때문에 모든 경우에 대해서 유실선을 추가해야 함
  2. 문제에서 제시한 유실선의 최대갯수는 3
  3. 따라서 유실선을 연결할 수 있는 모든 유실선 순회하며 유실선을 1개~3개 연결
  4. 방문체크로 유실선을 연결 해 조건을 충족하는지 알 수 있음
  5. 조건을 충족하는 조합 중 가장 최소 조합을 뽑는 것

사다리를 타는 방법?

내 생각: 번호를 기준으로 내려가며 좌우를 확인하고 1을 발견하면 이동 → 유실선을 추가할때 마다 모든 사다리 줄을 이 과정을 거치면 시간초과가 발생할 것 같음 해설: 유실선을 기준으로 연결된 지점끼리 번호를 교환 → 두 지점을 한번에 교체가능

dfs 백트래킹한 이유?

  1. 유실선 하나를 추가했을 경우 모든 사다리줄이 알맞은 고객에게 찾아가는지 확인 해야 함
  2. 조건에 충족하지 않을 경우 더이상 사다리를 타지 않고 깊이 탐색에서 제외