Algorithm/백준

[백준/Python] 카드

poppy 2021. 10. 13. 10:57
반응형

https://www.acmicpc.net/problem/11652

 

11652번: 카드

준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지

www.acmicpc.net

[ 처음 코드 - 시간 초과 ]

n = int(input())
cards = [int(input()) for _ in range(n)]
print(max(cards, key = cards.count))

 

[ 최종 코드 ]

시간 초과가 나서 찾아보니 딕셔너리를 쓰면 시간 초과가 해결된다고 해서 딕셔너리를 사용한 코드로 바꾸었다! 딕셔너리로 해도 시간초과가 난다면 PyPy3 로 해보면 통과될 것이다

n = int(input())
cards = {}
for _ in range(n):
	c = int(input())
        # 키 값 체크 후 카드개수 업데이트
	if c in cards: cards[c] += 1
	else: cards[c] = 1
	
cards = sorted(cards.items(), key=lambda x: (-x[1], x[0])) # 카드개수 내림차순 -> 카드값 오름차순 정렬
print(cards[0][0])

1. 카드 값을 입력받는다.

2. 키 값 체크 후 카드 개수를 업데이트한다.

    2-1. 키 값이 있다면 기존 카드 개수에 +1

    2-2. 키 값이 없다면 카드 개수는 1

3. cards 를 정렬한다. 카드 개수 기준으로 내림차순 정렬 후 카드값 기준으로 오름차순 정렬한다.

4. 결과를 출력한다.

반응형

'Algorithm > 백준' 카테고리의 다른 글

[백준/Python] 시리얼 번호  (0) 2021.10.31
[백준/Python] 절대값 힙  (0) 2021.10.23
[백준/Python] 요세푸스 문제 0  (0) 2021.10.10
[백준/Python] 후위 표기식2  (0) 2021.10.07
[백준/Python] 괄호  (0) 2021.10.06