관리 메뉴

솜씨좋은장씨

[BaeKJoon] 11652번: 카드 (Python) 본문

Programming/코딩 1일 1문제

[BaeKJoon] 11652번: 카드 (Python)

솜씨좋은장씨 2020. 2. 15. 06:49
728x90
반응형

1일 1문제 9일차!

오늘의 문제는 카드입니다.

 

 

11652번: 카드

준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지고 있는 정수를 구하는 프로그램을 작성하시오. 만약, 가장 많이 가지고 있는 정수가 여러 가지라면, 작은 것을 출력한다.

www.acmicpc.net

이 문제는 -26^2와 26^2 사이의 N개의 카드의 숫자를 입력받으면

그 중 가장 많이 존재하는 카드의 숫자는 무엇인지 찾아내는 문제입니다.

 

저번 수 정렬하기 3에서 dictionary를 활용하여 풀었던 것을 활용해보려합니다.

 

[BaeKJoon] 10989번: 수정렬하기 3 (Python)

1일 1문제 8일차! 다행히도 작심 3일에 끝나지 않고 작심 8일까지 왔습니다. 오늘 풀어볼 문제는 수 정렬하기 3 입니다. 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다...

somjang.tistory.com

import sys

N = int(input())

my_dict = {}

for i in range(N):
    num = int(sys.stdin.readline())
    
    if num not in my_dict.keys():
        my_dict[num] = 1
    else:
        my_dict[num] = my_dict[num] + 1
        
new_dict = dict([(value, key) for key, value in my_dict.items()]) 

print(new_dict[max(new_dict.keys())])
    

결과는!

 

왜 틀렸나하고 문제를 잘 살펴보니 

여러개의 숫자가 있을 경우 그 중에서 가장 작은 수를 출력해야하는 조건을 만족하지 못한 답이었습니다.

그리고 key와 value를 바꿔주는 과정에서도 같은 value값의 수가 key로 바뀌면서

가장 작은 수를 추출할 수 없게 사라지는 경우도 있었습니다.

 

이번에는 dictionary의 values() 함수를 활용해 풀어보기로 했습니다.

import sys

N = int(input())

my_dict = {}

for i in range(N):
    num = int(sys.stdin.readline())
    
    if num not in my_dict.keys():
        my_dict[num] = 1
    else:
        my_dict[num] = my_dict[num] + 1

max_num = max(list(my_dict.values()))

answer = []

for key, value in my_dict.items():
    if value == max_num:
        answer.append(key)
        
print(min(answer))

결과는!

 

 

SOMJANG/CODINGTEST_PRACTICE

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

 

Comments