다이아 스트릭 (3)
3주간 고통받으며 이었던 스트릭 그중 마지막 주에 푼 문제들이다. ※ 풀이 스포 주의 5/4) 14636번 [Money for Nothing] 예전에 분할정복을 이용한 dp 최적화에 관한 글을 보고 나서 언젠가 한번 써보고 싶다는 생각을 했다. 감소하는 형태의 두 후보군을 처리할 방법을 고민하다 dnc opt에서 나오는 특수한 형태를 만족함을 발견했고 아이디어만 알고 있던 상태라 구현이 이게 맞나 하면서 짰는데 맞았다. 5/5) 28207번 [Classical Geometry Problem] 문제를 공간에 나타내면 정육면체의 각 꼭짓점방향으로 원하는만큼 이동시켜 특정 위치로 이동시켜야 하는 문제다. 2차원으로 낮춰 생각해봤을때 오른쪽 위 꼭짓점을 마지막으로 사용해 이동시키고자 하면 그 전에 제시한 위치와 오른쪽위 꼭짓점을 지나는 직선위에 점이 위치하면 된다. 가장 만들기 쉬운 아랫변과 왼쪽변 둘중 교점이 존재하는 점까지 이동시키는것이다. 이제 원래 문제로 돌아오면 평면위 한점에 위치시키는 방법을 알고있으므로 같은 방법으로 (255,255,255)와 제시한 위치를 지나는 직선과 xy,yz,zx평면 셋중 하나와의 교점을 찾아내면 된다. 5/6) 15310번 [아티스트] 문제만 보면 간단히 해결할 수 있는 아이디어가 뭔가 있을것 같은데 도저히 떠올리지 못해서 결국 에디토리얼을 깠고 너무 아이디어가 아름다워서 그냥 하루종일 여운에 잠겨 어떻게 이런 아이디어를 떠올릴수 있지 머리속으로 nmk번 반복하면서 하루를 보냈다. 이때는 분할정복 풀이를 완전히 이해하지 못해 불도저로 풀었고 나중에 timeismoney 풀이를 떠올리다 분할정복 풀이를 깨달았다. 5/7) 27714번 [Klingon High Council Training] 모 실버 문제에 의해 네개의 제곱수로 모든 수를 만들수 있다는 사실은 ps러들에게 잘 알려져 있으나 세개의 제곱수로 표현할 수 있는 수를 찾는것은 쉽지 않았고 검색을 통해 4^a(8b+7)형태를 제외하고 전부 표현할수 있다는 ...