이 문제와 같이 복잡한 연산 끝에 단순한 결과가 나오는 경우는 중간 결과들이 정상적인지 확인을 해보셔야 합니다.
답이 간단해서 몇몇 예제의 답은 맞아도 중간 결과는 엉뚱할 수 있습니다. (즉, 계산이 엉뚱하게 되고 있을 수도..)
1.
dfs로 up/down/left/right 를 다 써치를 하는데... 이 경우는 자식이 4개씩 있는 트리를 순회하는 것이라는 아시죠?
즉, up/up/up/up/up 하고 나서 하나 위로 올라가서 down 을 수행하니까 up/up/up/up/down 을 계산하는 것인데...
195 라인에서는 제일 처음으로 돌리네요. 그러면 up/up/up/up/down 이 아니라 down 이 되는거죠.
2.
중간 결과를 체크하기 위한 코드를 짜고 몇가지 경우를 돌렸습니다.
main 함수 수정(테스트를 위한) 및 함수 두개 추가하고 아래 입력을 넣으면 예상 외의 결과를 보여주네요.
3 2 4 8 2 4 8 2 4 8
lawliet777 4년 전 1
정말 어렵게 어렵게 취업을 위해 공부중인데
하루종일 고민해서 짠 코드가 틀려버리니...멘탈이 나가네요...
각설하고,
다른분의 풀이를 보니까 회전하여서 상 하 좌 우를 한번에 처리하였던데..
저는 아직 걸음마 수준이라 다음과 같이 4개의 함수를 각각 작성하고, switch case문으로 dfs를 돌렸네요.
아래 코드에서 정답과 다르게 나오는 부분을 좀 여쭤봐도 될까요?
제가 디버깅한 바로는 제대로 나오는것 같은데...ㅠㅠ 부탁드립니다.