준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다.
준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지고 있는 정수를 구하는 프로그램을 작성하시오. 만약, 가장 많이 가지고 있는 정수가 여러 가지라면, 작은 것을 출력한다.
첫째 줄에 준규가 가지고 있는 숫자 카드의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 숫자 카드에 적혀있는 정수가 주어진다.
첫째 줄에 준규가 가장 많이 가지고 있는 정수를 출력한다.
이 문제는 딕셔너리로 접근하면 된다!
import sys
num = int(input())
cardDict = {}
for i in range(num):
cardNum = int(sys.stdin.readline())
if cardNum in cardDict:
cardDict[cardNum] += 1
else:
cardDict[cardNum] = 1
sortedDict = sorted(cardDict.items(), key = lambd x: (-x[1], x[0]))
print(sortedDict[0][0])
딕셔너리는 짝꿍이 있는 자료형이라고 생각하면 된다.
fruit = {'apple': 1, 'banana' : 2, 'orange' : 3, 'grape' : 4}
print(fruit.items())
keyList = fruit.keys()
valuesList = list(fruit.values())
{'key' : 'value'} 형식으로 생성하고 items()
로 (key, value) 쌍에 접근할 수 있다.
keys()
, values()
: 모든 key, value 값을 가져올 수 있다.
for key,value in fruit.items():
print('key: {}, value:{}'.format(key,value))
key 와 value 에 모두 접근하고 싶은 경우, items()
를 사용하면된다!
key 값이 해당 딕셔너리에 있는지 확인할 때 사용하는 함수이다.
if 'banana' in fruit:
print("there's a banana")
else:
print("there's no banana")
리스트의 값을 변경하듯이, 딕셔너리[key] = new_value
형식으로 key 에 new_value 를 저장한다.
if 'banana' in fruit:
fruit['banana'] += 1
else:
fruit['banana'] -= 1
del fruit['apple']
fruit['new_apple'] = 1
딕셔너리[new_key] = value 형식으로 새로운 key 값이 들어오면 자동으로 딕셔너리에 추가된다.
del
함수로 삭제!