

위 사진은 답안의 전체 소스 코드이다.
이 문제를 이해하는데 총 3일이 걸렸다...
3일 동안 이 문제를 본 것이 아니지만, 너무 이해가 안가서 딴짓하다 오기를 반복하며 시간을 많이 소비했다. (알고리즘 때려치고 싶었다...)
문제를 대충 이해하고 푼 지금에도 2주 뒤에 풀라고 한다면 못 풀 것 같다..
우선 가장 이해가 가지 않았던 부분.
1. 벽 세우기.
전체 벽을 세워야 하니까... 중첩 반복문으로 n*m중에 3개를 뽑는 경우의 수를 모두 고려해 줘야 한다.
지금도 헷갈리는게 build_wall가 모든 경우를 고려해 준 것이 맞는지 잘 모르겠다...
(이해하기 위해 그림으로 그린 후, 이해한 것을 기록하자.)

그리면서 대충은 이해한 것 같은데,, 아직 확신이 안든다.
이것만 잡고 있을 순 없으니 일단은 넘어가자.
이 문제에서 가장 이해가 가지 않았던 부분이 벽 세우는 것이였다.
어떤 분이 말하기를 자신은 알고리즘 6개월 만에 재귀가 뭔지 드디어 정확히 안 것 같다고 하던데,,,
그 만큼 보기와 다르게 이해하기 어려운 부분인 것 같다.
이 문제를 풀면서 깨닮은 점.
1. 제시된 조건을 잘 보자.
N<=8 M<=8 같은 주어진 조건을 그냥 보고 무시하곤 햇는데, 엄청난 힌트라는 것을 알게 되었다.
주어진 범위가 1만인 경우, 10000 * 10000 = 1억이 되므로 중첩 반복문을 사용했을 때 무조건 1초가 넘어가므로 최적화를 시켜야 한다.
하지만 위 문제와 같이 범위가 아주 작은 것들은, 중첩 반복문으로 접근하는 방식이 맞을 확률이 높을 것 같다.
지금 생각해보면 위 문제도 벽을 세울 때 재귀를 사용하는 방법을 생각해내는 것 말고는 그렇게 엄청 어려운 문제는 아닌 것 같다.
실제로 골드 5정도니,, 아직 갈 길이 먼 것 같다.
쏘마 꼭 합격하고 싶은데,, 끝까지 열심히 해보자.
'개발 > 알고리즘' 카테고리의 다른 글
백준 빙산 2573 (0) | 2021.02.01 |
---|---|
백준 16236 파이썬 (0) | 2021.02.01 |
[BOJ] 잃어버린 괄호_1541 (0) | 2021.01.27 |
[BOJ] 거스름돈_5585 (0) | 2021.01.24 |
[BOJ] 나이트의 이동_7562 (0) | 2021.01.22 |