본문으로 바로가기

최빈값구하기 : Mode 알고리즘

category Core Computing/알고리즘 2023. 12. 17. 08:34

오늘 알고리즘이란걸 처음 배웠다. 

알고리즘은 최적의 루트를 활용해 목표에 달성한다

알고리즘 관련 코드를 짤때, 이것이 최선인가? 라는 의문이 적게 들 것 같아서 앞으로 많이 편해질것같다!!

 

 

생각지 못한 방법이 많았다.

그중 하나는 "최빈값 구하기"  알고리즘이었다.

(최빈값 : 가장 많이 나타나는 값)

인덱스 개수를 활용하는 것은 상당히 충격적이었다. 어떻게 이런생각을..!

인덱스 숫자가 바로 그 수를 의미한다.

 

예를 들어 0이 x개, 1이 y개, 2가 z개 있다고 가정한다. 

 

그렇다면 arr배열은

arr[0] = x     // 0이 x개

arr[1] = y     // 1이 y개

arr[2] = z     // 2가 z개

가 되는 것이다!

 

이것을 활용하여,  for문을 사용하며 모든 요소를 한번씩 돌려 

0이 1개가 늘어날때 

arr[0]++ 

2가 1개가 늘어났을때

arr[2]++

이런식으로 그 값의 개수가 몇개인지 세어지고,

 

배열 arr 를 다시 한번 더 for문을 사용하여 모든 요소를 돌리며

int의 최솟값으로 설정했던 변수와 비교하여 

Max값과 Max값의 개수를 찾아낸다. (Max 알고리즘)

 

아마 이 알고리즘을 몰랐다면 딕셔너리를 사용하지않았을까 싶다.

딕셔너리를 사용해서, 요소탐색이 힘들고 복잡해진 코드를 만들었을 것이다.

게다가 비슷한 코드에서 비슷하게 활용도 가능해보인다. 

 

알고리즘을 아는 것이 힘..?!