프로그래밍/Python

#230411 코딩 테스트 연습

Nowon9159 2023. 4. 11. 10:28
반응형

중앙값 구하기 문제

제한 사항을 자세히 읽어보니 array 의 길이가 홀수였다... 요구사항을 충족시키는 것은 중요! 잘 읽고 풀어보자

array 매개변수를 받아서 array 의 길이를 구한 다음 길이 / 2 후 반올림하고 정수형으로 변환 해주면 될 것 같았음

내가 계산한 결과

 

44.4 퍼센트...

그럼 어떻게 해야될 지 구글에 물어봤다

 

중앙값의 개념부터 확립하고 가야 할 듯

중앙값 개념

중앙값(영어: median)는 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미한다. 예를 들어 1, 2, 100의 세 값이 있을 때, 2가 가장 중앙에 있기 때문에 2가 중앙값이다.

값이 짝수개일 때에는 중앙값이 유일하지 않고 두 개가 될 수도 있다. 이 경우 그 두 값의 평균을 취한다. 예를 들어 1, 10, 90, 200 네 수의 중앙값은 10과 90의 평균인 50이 된다. – 출처: 위키백과(https://ko.wikipedia.org/wiki/%EC%A4%91%EC%95%99%EA%B0%92)

알고리즘

  1. 데이터 오름차순으로 정렬(sort함수)
  2. 짝수, 홀수 구분
  3. 홀수일 경우, [center-index] 구해서 Return
  4. 짝수일 경우, [center-index] + [center-index – 1] / 2해서 Return

 

중앙값이 홀수일 경우, 짝수일 경우가 다르다는 것을 알았고

배열을 sorting하는 과정이 필요하다는 것을 알았다. (당연히 그렇겠지... 생각도 못했음)

 

 

더 찾아보니 numpy에 median 이라는 메쏘드를 사용하면 더 편리하게 계산이 가능하다.

numpy median 메쏘드 사용한 결과

 

 

 

참고 :

 

최빈값 구하기 문제

흠... 어렵다 array에서 가장 자주 나오는 숫자를 뽑아낸 뒤 리턴한다. if 최빈값이 여러개면 -1을 리턴하라는 문제인데

최빈값을 출력하려면 어떻게 해야할까?

일단 array 에 있는 값을 뽑아 내려면 for문으로 뽑아야되나...? 

배열 sorting 하는 것 처럼 [x, y, z] 있을 때 x == y 를 비교하고 맞다면 변수를 생성해 count + 1 하는 방식도 좋을 것 같다

그 다음 y == z 를 비교하고 또 맞다면 생성했던 변수를 count + 1 하고 아니라면 새로운 변수를 생성해 count + 1 하는 방법을 하면 될듯...?

 

잘 이해가 가지 않아서 검색..

이렇다고 한다...

꽤나 난이도가 있어보이는데 레벨 0이라니... 분발 해야겠다

 

 

참고 : 

반응형