DFS를 활용한 백트래킹으로 문제를 풀었다.
사실 DFS를 안쓰고 백트래킹 하는 법을 잘 모르겠다.
아무튼 코드가 복잡하다 다른 분이 푼 코드에 비해 현저히 길다.
내가 푼 방식으로 봤을 때 키포인트는
1. 33,34줄에서 방문처리와 pop()
DFS를 활용한 백트래킹에서 가장 중요한 부분인것 같다.
2. 56줄 부터 나오는 join
int형은 길이를 셀 수 없기때문에 str형태로 바꿔서 max_num의 길이를 측정하고, 리스트에 str로 append해서 str(0) 과 join했다. join은 str형태 밖에 쓸 수 없다.
아래는 다른 사람이 푼 코드를 보고 따라한 방식이다.
max_num, min_num을 처음부터 str형태로 저장했다.
위 풀이는 아무리봐도 이해가 안된다.
절대 내가 생각해 낼 수 없는 풀이같다.
설명에 아래와 같이 나오는데 와닿지가 않는다.
- 조건에 부합한 문자열이 처음 생겼을 때 그 값이 제일 작은 값이다. 그리고 제일 마지막에 구해진 값이 제일 큰 값이다 (시작할 때 0부터 커지는 순서로 for문을 돌렸기 때문에.)
백트래킹 문제를 많이 접해봐야겠다.
'알고리즘 문제 > 백트래킹' 카테고리의 다른 글
[Java] 백트래킹 (N과 M (1)) (0) | 2023.07.05 |
---|---|
백트래킹 (좋은수열) (0) | 2022.01.30 |
백트래킹 (꽃 길) (0) | 2022.01.27 |
DFS + 백트래킹 (연산자 끼워넣기) (0) | 2022.01.19 |
DFS + 백트래킹 (테트로미노) (0) | 2022.01.19 |