count(0)
으로 해결하려했지만 역부족import sys
n = int(sys.stdin.readline())
# 자신보다 왼쪽에 있는 키 큰 사람의 수
people = list(map(int,sys.stdin.readline().split()))
# 키 순서대로 사람들을 나열
height = [0] * n
for i in range(n):
# 자신의 왼쪽에 있는 키 큰 사람의 수
cnt = 0
for j in range(n):
# 자신의 왼쪽에 있는 키 큰 사람의 수와 맞고, 그 자리에 아무도 없다면
if cnt == people[i] and height[j] == 0:
height[j] = i + 1
break
# 자리에 아무도 없다면 자신의 왼쪽에 키 큰 사람의 수를 카운트
elif height[j] == 0:
cnt += 1
print(*height)
파이썬에서 *
는 언팩(Unpack)이다. 시퀀스 언패킹 연산자(Sequence Unpacking Operator)로 말 그대로 시퀀스를 풀어 헤치는 연산자를 뜻하며, 주로 튜플이나 리스트를 언패킹하는데 사용한다.
import collections
nums = [1, 1, 1, 2, 2, 3]
k = 2
print(collections.Counter(nums).most_common(k)) # [(1, 3), (2, 2)]
print(list(zip(collections.Counter(nums).most_common(k)))) # [((1, 3),), ((2, 2),)]
print(list(zip(*collections.Counter(nums).most_common(k)))) # [(1, 2), (3, 2)]
# Counter.moste_common(k): 데이터가 가장 많은 순으로 k개 리턴
*
로 언패킹을 하여 튜플의 값을 풀을 수 있다.fruits = ['lemon', 'pear', 'watermelon', 'tomato']
print(*fruits) # lemon pear watermelon tomato
*
로 언패킹하여 출력할 수 있다*
는 언패킹뿐만 아니라 함수의 파라미터가 되었을 때는 반대로 패킹(Packing)도 가능하다.def f(*params):
print(params)
f('a', 'b', 'c') # ('a', 'b', 'c')
a, *b = [1, 2, 3, 4]
print(a) # 1
print(b) # [2, 3, 4]
*a, b = [1, 2, 3, 4]
print(a) # [1, 2, 3]
print(b) # 4
*
로 묶어서 처리할 수 있다. 일반적인 변수는 값을 하나만 취하지만 *
로 처리하게 되면 나머지 모든 값을 취하게 된다.*
1개는 튜플 또는 리스트 등의 시퀀스 언패킹이고, **
2개는 키/값 페어를 언패킹 하는데 사용된다.date_info = {'year' : '2020', 'month' : '01', 'day' : '7'}
new_info = {**date_info, 'day': "14"}
print(new_info) # {'year': '2020', 'month': '01', 'day': '14'}
https://velog.io/@t1won/Python-%EC%95%84%EC%8A%A4%ED%85%8C%EB%A6%AC%EC%8A%A4%ED%81%AC