프로그래머스 Swift 쿼드압축 후 개수 세기 2

프로그래머스 Lv. 2 Swift 알고리즘 - 큰 수 만들기

문제 유형이 Greedy라고 나와있어서 아.. 이게 그리디구나 싶었다.. 좀 더 명확하게 하기 위해 개념을 찾아보니 '매 순간마다 최선의 경우를 고르고 다른 경우는 고려하지 않는' 알고리즘이라고 한다. 참고한 블로그에도 나와있지만 그리디의 가장 큰 문제는 최적의 해를 구하기 어렵다는 것이다. 어떤 주어진 상황에서 최고의 결과를 내기 위함이기 때문에, 그 주어진 상황이라는 것이 바뀔 때마다 최적의 해도 바뀐다. 즉, 반례 혹은 특별한 상황에 대한 대비가 되어야 한다. (참고: https://dev-mandos.tistory.com/80) 이 문제를 풀면서 생각한 논리적 흐름 결국 가장 중요한 것은 앞자리이다. 내가 사용할 수 있는 count(k) 안에서 가장 앞자리에 큰 수를 올리고 그 다음으로 오는 숫자..

프로그래머스 Lv. 2 Swift 알고리즘 - 쿼드압축 후 개수 세기

오늘도 재귀와 싸웠다... 결국 스스로 풀지 못했는데... 앞 부분까진 전부 이해하고 recursive를 걸어야하는 상황에서 어떻게 진행할지 감이 안잡혀서 다른 분들의 코드를 참고했다. (참고: https://42kchoi.tistory.com/m/374) 이 문제를 풀면서 생각한 논리적 흐름 먼저 배열의 원소들을 4등분해야하기 때문에 미리 4등분된 배열을 만들어두고 그 안에 4사분면의 위치에 맞게 원소들을 넣어주고 그 안의 원소들이 전부 0이거나 1이면 원소들을 모두 지우고 0 or 1의 원소만 넣어주었다. 이 후 하나로 합쳐지지 않은 배열을 다시 4등분으로 조각하여 Recursive를 걸어야하는데 이 부분에서 걸렸다... 다른 분들의 코드를 참고해보니 좀 이해가 갔다. 재귀를 또 4등분으로 아예 나..