중앙값 구하기 문제
제한 사항을 자세히 읽어보니 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)
알고리즘
- 데이터 오름차순으로 정렬(sort함수)
- 짝수, 홀수 구분
- 홀수일 경우, [center-index] 구해서 Return
- 짝수일 경우, [center-index] + [center-index – 1] / 2해서 Return
중앙값이 홀수일 경우, 짝수일 경우가 다르다는 것을 알았고
배열을 sorting하는 과정이 필요하다는 것을 알았다. (당연히 그렇겠지... 생각도 못했음)
더 찾아보니 numpy에 median 이라는 메쏘드를 사용하면 더 편리하게 계산이 가능하다.
참고 :
- https://wiki.jjagu.com/?p=193
- https://bskyvision.com/entry/python-%EC%A4%91%EC%95%99%EA%B0%92median-%EA%B3%84%EC%82%B0%ED%95%98%EA%B8%B0-numpymedian
최빈값 구하기 문제
흠... 어렵다 array에서 가장 자주 나오는 숫자를 뽑아낸 뒤 리턴한다. if 최빈값이 여러개면 -1을 리턴하라는 문제인데
최빈값을 출력하려면 어떻게 해야할까?
일단 array 에 있는 값을 뽑아 내려면 for문으로 뽑아야되나...?
배열 sorting 하는 것 처럼 [x, y, z] 있을 때 x == y 를 비교하고 맞다면 변수를 생성해 count + 1 하는 방식도 좋을 것 같다
그 다음 y == z 를 비교하고 또 맞다면 생성했던 변수를 count + 1 하고 아니라면 새로운 변수를 생성해 count + 1 하는 방법을 하면 될듯...?
잘 이해가 가지 않아서 검색..
이렇다고 한다...
꽤나 난이도가 있어보이는데 레벨 0이라니... 분발 해야겠다
참고 :
'프로그래밍 > Python' 카테고리의 다른 글
Python 부트 캠프 - 커피 머신 생성 (2) | 2023.05.19 |
---|---|
Python 부트 캠프 - 계산기 만들기 (0) | 2023.04.30 |
Python 부트 캠프 - 경매 게임 만들기 (0) | 2023.04.26 |
Python 부트 캠프 - hangman 게임 만들기 (0) | 2023.04.18 |
Python 부트캠프 - tip 계산기 만들기 (0) | 2023.02.08 |