[python 파이썬] 백준 11652번 카드

2021. 1. 28. 02:39Algorithm/BOJ

반응형
 

11652번: 카드

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

www.acmicpc.net

 

1. 문제를 제대로 읽지 않았다. 

최대값이 여러개일 경우 작은 수를 출력하라는 문구를 놓쳤다.

 

2. 두번째 시도 - collections 모듈의 Counter클래스를 사용한 방법 - 틀림

 

from collections import Counter # collections모듈의 Counter 클래스
import sys 

N = int(sys.stdin.readline())
numList=[int(sys.stdin.readline()) for _ in range(N)]


count = Counter(numList)
print(count.most_common(1)[0][0])

 

from collections import Counter

n = int(input())
numList=[]
for i in range(n):
   num = int(input())
   numList.append(num)

cntNumList = Counter(numList)

maxList= [k for k,v in cntNumList.items() if max(cntNumList.values()) == v]

min(maxList)

 

모듈을 사용해서 틀린 걸까..?라는 의심이 들기 시작했다. 

 

3. 세번째 시도 - 모듈 사용하지 않은 방법 - 맞음!

 

n = int(input())

dic={}
for _ in range(n):
  tmp = int(input())
  if tmp in dic:
    dic[tmp]+=1
  else:
    dic[tmp]=1
dic = sorted(dic.items(),key=lambda x:(-x[1], x[0])) 
# 카드개수를 기준으로 먼저 내림차순으로 정렬후 카드개수가 같으면 카드값을 기준으로 오름차순 정렬되게 구현했다
# x[1]-밸류는 내림차순 x[0] - 키는 오름차순 (-x[1], x[0]) 1순위 밸류 2순위 키 

print(dic[0][0])

 이걸로 하니 됐다 ..! 

 

 

아직 딕셔너리 쓰는 것 , 람다식 쓰는 것 , 람다식에 정렬 적용하는 것  등등 낯설다.

문제 많이 풀어보면 적응하겠지!

 

 

<참고자료>

람다식에 sort적용

dailyheumsi.tistory.com/67

 

파이썬 정렬, 다중 조건으로 한 번에 하기.

파이썬으로 문제를 풀다보면, 여러 조건으로 소팅을 해야하는 경우가 있다. 일반적인 소팅은 다음과 같이 sorted() 혹은 .sort() 를 사용한다. a = [4,1,2,5,7,3,6] b = sorted(a) # b = [1,2,3,4,5,6,7] sorted()..

dailyheumsi.tistory.com

3dmpengines.tistory.com/1647

 

collections.Counter 빈도 수, 최빈값 구하기

먼저 최빈 값이란? 자료 중에서 가장 많이 출현한 값을 말한다, 최고의 빈도수를 보이는 값, (빈도수 : 같은 일이 반복되는 도수) 파이썬을 이용하여 최빈값(mode)를 구하기 위해서는 collections 모듈

3dmpengines.tistory.com

johnyejin.tistory.com/101

 

[Python]백준 - 카드(11652번)

문제출처 - https://www.acmicpc.net/problem/11652 11652번: 카드 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준

johnyejin.tistory.com

 

반응형