- 문제 :
fruits = ['apple','grape','strawberry','banana'] 4개의 과일이 있다
내가 가지고 있는 과일 리스트에서 각각의 과일들이 몇개 있는지 알아보고,
가장 많은 과일들을 순서대로 알아보자.
같은 수의 과일이라면 과일명을 기준으로 내림차순으로 나타내어라
fruits중 내가 가지고 있지 않은 과일은 제외하자
- 내가 가지고 있는 과일 리스트
my_fuit_list = ['apple', 'grape', 'strawberry', 'strawberry', 'apple', 'apple', 'apple']
apple : 2개
grape : 3개
strawberry : 2개
banana: 0개
- 답은
answer = ['grape','apple','strawberry'] # 바나나는 없으므로 제외한다.
- 코딩
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
26
27
28
29
30
31
32
|
## prerequisite
fruits = ['apple','grape','strawberry','banana']
my_fruit_list = ['apple', 'grape', 'strawberry', 'strawberry', 'grape', 'grape', 'apple']
## code from here
my_list = []
answer = [] # answer will be ['grape', 'strawberry', 'apple']
def solution(fruits, my_fruit_list):
for i in range(len(fruits)):
my_list.append([fruits[i],0])
print(my_list) #[['apple', 0], ['grape', 0], ['strawberry', 0], ['banana', 0]]
for i in range(len(my_fruit_list)):
for j in range(len(fruits)):
a = my_fruit_list[i]
b = my_list[j][0]
if a == b:
my_list[j][1] += 1
break
print(my_list) # [['apple', 2], ['grape', 3], ['strawberry', 2], ['banana', 0]] / not yet sorted
my_list.sort(key=lambda x:(x[1], x[0]), reverse=True)
# my_list.sort(key=lambda x:(-x[1], -x[0]))
## checkpoint : 1. '-' means reverse 2. first sort by x[1](count) and then if there is same value, sort by x[0](name)
print(my_list) # [['grape', 3], ['strawberry', 2], ['apple', 2], ['banana', 0]]
for fruit, i in my_list:
if i != 0: # except for no fruit
answer.append(fruit)
print(answer)
return answer
print('answer is ',solution(fruits,my_fruit_list))
|
cs |
- 정렬방법
2차원 배열을 정렬할 경우 key를 사용하여 정렬한다.
내림차순일 경우, reverse = True를 붙이거나 '-'부호를 붙인다.
my_list.sort(key=lambda x:(x[1], x[0]), reverse=True)
or
my_list.sort(key=lambda x:(-x[1], -x[0]))
- example
my_list = [['apple', 2], ['grape', 3], ['strawberry', 2], ['banana', 0]]
| |
my_list.sort(key=lambda x:(x[1], x[0]), reverse=True)
| |
▼
my_list = [['grape', 3], ['strawberry', 2], ['apple', 2], ['banana', 0]]
# x[1]인 숫자대로 내림차순 후에, strawberry와 apple의 x[1]이 같기 때문에
# x[0]인 과일의 이름으로 내림차순을 한 결과이다.
'python > 파이썬 예제' 카테고리의 다른 글
다리를지나는트럭 - 프로그래머스 (0) | 2021.05.01 |
---|---|
파이썬으로 최빈값 구하기 - list사용(최빈값 1개 vs 여러개) [#4-2] (2) | 2020.04.18 |
스도쿠가 정답인지 확인하는 코드 [#6] (0) | 2020.04.12 |
파이썬 행의 합, 열의합, 최대값 구하는 함수[#5] (0) | 2020.03.21 |
파이썬 최빈값 구하시-dictionary 사용 [#4-1] (0) | 2020.03.18 |