+참고하세요) [python example #4-1] dictionary자료형을 사용하여 최빈값 뽑아내기
[PYTHON] 최빈값 출력하기 - dictionary사용안하고 list만 사용
이전에 포스팅한 [dictionary자료형을 사용하여 최빈값 뽑아내기 #4-1]보다 간단한 방법이에요 참고바랍니다.~
-
문제 -> #4-1 포스팅과 같음
숫자로 이루어진 list에서 가장 많이 등장한 최빈값을 출력하세요
최빈값 1개 vs 최빈값 여러개 구별하기
-
알고리즘 표현 -> #4-1포스팅과 다르니 읽어봐주세요!
1. input = [2,2,2,5,5,5,6,6,6,6,6,6,9,9,11,11,11,11,11,11]
2. input의 최댓값만큼 [0]으로만 이루어진 새로운 list를 만든다.
-> my_list라고 할 것
3. input의 각 값을 my_list의 위치라고 생각한다.
>> input값 = my_list의 위치값
ex) input의 첫번째 숫자인 4의 경우,
my_list의 4번째(index는3 일 것) 값을 +1을 한다.
즉, input의 값이 나올때마다 my_list의 input의 값과 같은 위치에 값을 +1씩 증가시킨다.
4. 만약 my_list의 10번째(index는 9일 것)값이 5라면 input의 10이라는 숫자가 5번 나온 것이다.
-
input
[2,2,2,5,5,5,6,6,6,6,6,6,9,9,11,11,11,11,11,11]
>> 쉬운 이해를 위해 간단하게 구성
★경우 1) 최빈값이 1개인 경우
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
input = [2,2,2,5,5,5,6,6,6,6,6,6,9,9,11,11,11,11,11,11]
max_input = max(input)
my_list = [0] * max_input
print(my_list) #11개가 생김
for i in input:
my_list[i-1] += 1 #input의 값 = my_list의 위치값, 나올때마다 +1하는
#i-1을 하는 이유는 파이썬의 index는 0부터 시작하기 때문이다.
#즉 input의 1의 값은 my_list의 첫번째 index인 0번 index에서 +1을 하기위해서이다.
print(my_list)
#[0, 3, 0, 0, 3, 6, 0, 0, 2, 0, 6]
#2-3번, 5-3번, 6-6번, 9-2번, 11-6번 나옴
#-------------경우1, 2의 다른 부분 ---------------#
print('my_list의 index를 1부터라고 했을 때, 최빈값은 %d 이며, 총 %d번 나왔다'
% (my_list.index(max(my_list))+1,max(my_list) ))
#list.index(인덱스번호 알고싶은값) => list에서 가장 최댓값의 index를 구하는 함수
#my_list.index(max(my_list)) 이 함수는 첫번째 최빈값만 불러옴.
#------------------------------------------------#
|
cs |
-
결과값
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 3, 0, 0, 3, 6, 0, 0, 2, 0, 6]
input 리스트에서, 최빈값은 6 이며, 총 6번 나왔다
★경우 2) 최빈값이 여러개인 경우
rf) 참고로, 이 문제는 최빈값이 두개임. : 6 & 11
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
input = [2,2,2,5,5,5,6,6,6,6,6,6,9,9,11,11,11,11,11,11]
max_input = max(input)
my_list = [0] * max_input
print(my_list) #11개가 생김
for i in input:
my_list[i-1] += 1 #input의 값을 my_list의 index라고 하고 나올때마다 +1하는 것이다.
#i-1을 하는 이유는 파이썬의 index는 0부터 시작하기 때문이다.
#즉 input의 1의 값은 my_list의 첫번째 index인 0번 index에서 +1을 하기위해서이다.
print(my_list)
#[0, 3, 0, 0, 3, 6, 0, 0, 2, 0, 6]
#2-3번, 5-3번, 6-6번, 9-2번, 11-6번 나옴
#-------------경우1, 2의 다른 부분----------------#
num = 0 #최빈값의 개수
my_most = 0 #최빈값을 알기 위한 변수 -my_list의 위치 반환
for k in my_list:
my_most += 1 #my_list의 위치값 = input의 값
if k == max(my_list):
num += 1 #최빈값이 나올때만 증가시킴
print('input 리스트에서, 여러 최빈값중 %d번째 최빈값은 %d 이며, 총 %d번 나왔다.'
% (num, my_most,max(my_list)))
print('이 input리스트에서 최빈값의 개수는 %d개 이다' % num)
#------------------------------------------------#
|
cs |
-
결과값
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
[0, 3, 0, 0, 3, 6, 0, 0, 2, 0, 6]
input 리스트에서, 여러 최빈값중 1번째 최빈값은 6 이며, 총 6번 나왔다.
input 리스트에서, 여러 최빈값중 2번째 최빈값은 11 이며, 총 6번 나왔다.
이 input리스트에서 최빈값의 개수는 2개 이다
-
배울코드
1. list의 위치값은 index-1 이라는 것을 이해하기
2. list의 위치값을 input값이라고 생각하기
3. list.index(위치를 알고 싶은 값) = 위치 반환 > 리스트의 index구하는 코드 이해하기
*)
어떤 피드백이든 댓글부탁드립니다.
더 좋은 방법이 있다면 알려주세요.
도움이 되셨다면, 하트버튼 또는 댓글부탁드려요~
요청할 문제가 있다면 댓글 부탁드려요!!!
*(
'python > 파이썬 예제' 카테고리의 다른 글
다리를지나는트럭 - 프로그래머스 (0) | 2021.05.01 |
---|---|
파이썬 리스트 다중 조건 정렬(python Multiple conditions sort) (0) | 2021.04.28 |
스도쿠가 정답인지 확인하는 코드 [#6] (0) | 2020.04.12 |
파이썬 행의 합, 열의합, 최대값 구하는 함수[#5] (0) | 2020.03.21 |
파이썬 최빈값 구하시-dictionary 사용 [#4-1] (0) | 2020.03.18 |