Algorithm (2) 썸네일형 리스트형 Codility CountConformingBitmasks 2진수로 표현된 A와 B, C를 준수(Comforms)할 수 있는 2진수들의 개수를 찾는 문제입니다. 여기서 준수(Comforms)할 수 있는 2진수라는 뜻은 A라는 2진수의 0에 해당하는 자리가 0 또는 1이 될 수 있는 모든 수 입니다. 말이 어려운데, 예를 하나 들어보겠습니다. 1101 라는 수가 주어졌을 때, 1101 1111 이렇게 2개가 될 수 있습니다. 2번째 자리에 있는 유일한 0의 자리에 0 또는 1이 되는 2진수가 준수(Comforms)할 수 있는 2진수가 되는 것이죠. 즉, 준수(Comforms)할 수 있는 2진수의 개수는 원본이 되는 수의 0의 개수에 따라 0 또는 1이라는 두가지 선택지가 있기 때문에 준수(Comforms)할 수 있는 2진수의 개수 = (0의 개수)² 가 됩니다. .. Codility FloodDepth 바위들 중, 가장 깊은 웅덩이의 깊이를 알아내는 문제입니다. 이 문제의 알고리즘은 바위의 가장 높은 곳을 가르키는 peak와 새로운 peak가 나오기 전까지의 가장 낮은 바위의 row값을 알아내어 그 차를 구해 가장 큰값을 구하는 알고리즘 입니다. 1. 웅덩이가 발생하는 곳을 알아내는 것(내리막이 발생하는 지점), 만약 웅덩이가 발생한다면 현재까지의 웅덩이 중 가장 낮은지 row와 비교한다. 2. 오르막이 발생한다면, 웅덩이가 발생하는 곳 이전에 있던 바위들 중의 가장 높은 바위의 길이(peak)와 오르막이 발생한 지점의 바위높이 중 낮은 바위의 높이에서 지금까지 가장낮은 바위높이인 row값을 빼줍니다. depth = min(peak, rock[index+1]) - row 3. 이때, 새로운 peak가 .. 이전 1 다음