맞는데 왜 틀릴까..?

알고리즘 문제/백트래킹

백트래킹 (부등호)

안도일 2022. 1. 26. 18:18

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