Skip to content

Commit

Permalink
[Silver IV] Title: 카드, Time: 120 ms, Memory: 42900 KB -BaekjoonHub
Browse files Browse the repository at this point in the history
  • Loading branch information
ddubbu-dev committed Sep 14, 2024
1 parent f056021 commit 4127dd8
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 0 deletions.
30 changes: 30 additions & 0 deletions 백준/Silver/11652. 카드/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# [Silver IV] 카드 - 11652

[문제 링크](https://www.acmicpc.net/problem/11652)

### 성능 요약

메모리: 42900 KB, 시간: 120 ms

### 분류

자료 구조, 해시를 사용한 집합과 맵, 정렬

### 제출 일자

2024년 9월 14일 13:58:23

### 문제 설명

<p>준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -2<sup>62</sup>보다 크거나 같고, 2<sup>62</sup>보다 작거나 같다.</p>

<p>준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지고 있는 정수를 구하는 프로그램을 작성하시오. 만약, 가장 많이 가지고 있는 정수가 여러 가지라면, 작은 것을 출력한다.</p>

### 입력

<p>첫째 줄에 준규가 가지고 있는 숫자 카드의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 숫자 카드에 적혀있는 정수가 주어진다.</p>

### 출력

<p>첫째 줄에 준규가 가장 많이 가지고 있는 정수를 출력한다.</p>

29 changes: 29 additions & 0 deletions 백준/Silver/11652. 카드/카드.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
"""
[풀이]
- cnt table 작성
- sort (nlogn = 10^5*5 < 1초)
"""

import sys

readline = lambda: sys.stdin.readline().strip()
# readline = input
N = int(readline())
cnt_table = {}

for i in range(N):
num = int(readline())
prev = cnt_table.get(num, 0)

cnt_table[num] = prev + 1


result = 2**62 # inf
max_cnt = 0
for num, cnt in cnt_table.items():
if (cnt > max_cnt) or (cnt == max_cnt and num < result):
max_cnt = cnt
result = num


print(result)

0 comments on commit 4127dd8

Please sign in to comment.