✏️ PS/알고리즘 이론

    [ Rotate Matrix ] 2차원 배열 회전 알고리즘

    안녕하세요? 수구리입니다. 이번 포스팅에서는 PS 문제에서 한 번쯤은 보았을법한 2차원 배열 회전에 대한 내용입니다. 구체적인 문제를 풀면서 내용을 정리하려고 하였으나 좀 더 자주 쓰이는 내용일 것 같아서 따로 정리를 하는 글로 작성하게 되었습니다! 우선 간단하게 바로 5 X 5의 2차원 배열이 존재한다고 생각해보고, 시계방향으로 90도를 회전한다고 하였을 때 아래와 같은 그림입니다. 위의 그림에서 알 수 있는 부분은 90도 회전에서는 1행이 5열로 이동, 2행이 4열로 이동, 4행이 3열로 이동.. 따라서 정리 index(row, col)를 정리하면 아래와 같습니다. (0,0), (0,1), (0,2),... , (0,4) => (0,4), (1,4), (2,4),... (4,4) 규칙을 찾아내 보면,..

    [ Genetic Algorithm ] 유전 알고리즘을 통해 비밀번호를 뚫어보자!

    이번 포스팅에서는 유전 알고리즘을 통해 비밀번호를 찾는 알고리즘이다. 그전에 유전 알고리즘에 대해서 간략하게 설명을 하자면 다음과 같다. 말 그대로 유전 즉, 세대가 존재한다는 뜻이다. 이게 무슨 뜻이냐... 우선 랜덤으로 최초의 아이들을 생성한다. 그리고 그 생성된 아이들을 가지고 fitness (성능)을 측정한다. 성능을 측정할 때 적절한 점수를 부여하여 만약 점수가 높다면 해당 아이들을 선발해 낸다. 그리고 선발된 아이들을 교배하여 다음 세대를 만들어낸다. 그 과정에서 돌연변이도 추가하여 다음 세대를 만들어 내고 또 태어난 자식들을 가지고 성능을 측정하여 위의 과정을 계속 반복하여 수 세대를 걸쳐서 답을 도출해 내는 것이 유전 알고리즘이다. 그렇다면 파이썬으로 유전 알고리즘을 구현해보자. 함수가 많..

    [ Average Filter ] 실시간으로 들어오는 데이터의 평균을 구해보자!

    안녕하세요? 수구리입니다. 이번 포스팅에서는 평균 필터 알고리즘(Average Filter)이라는 알고리즘을 소개하려고 합니다. 리소스 모니터링 프로젝트를 진행하고 있는 도중, 실시간으로 CPU 사용량을 가져오는데, 이 데이터를 가지고 1분동안의 평균 CPU 사용량에 대해서 계산이 필요하게 되었습니다. 처음에 생각했던 것은 각 프로세스별로 1초마다 CPU 사용량을 받아오고 있기 때문에 1분에 대한 평균을 구하기 위해서는 60개짜리 크기의 배열을 하나씩 만들어주고, 평균을 구하면 되지 않을까?라고 생각했습니다. 하지만 이는 매우 무식한 방법이고, 공간적으로도 낭비가 심하고 또한 첫 1분에 대한 CPU 사용량을 계산하기 위해서는 최소 1분이라는 시간을 기다려야 한다는 점입니다. 그렇다면 평균 필터 알고리즘을..