Last active
June 23, 2021 14:52
-
-
Save dongwooklee96/02a1405835b3751808ed6953a95d7c76 to your computer and use it in GitHub Desktop.
problem 1.9
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
## 문제 : 배열에서 다수의 요소 찾기 | |
- 정수형 배열이 주어졌을 때, 다수의 요소를 찾아보자. | |
- 다수의 요소는 배열 내에서 [n / 2] 번 (floor(n / 2))를 초과하여 나타나는 요소를 말한다. | |
- 예를 들어서, 배열 요소의 총 개수가 9개라면, n / 2는 4.5이다. 결국에 5번 이상 나타나는 요소를 찾으면 된다. | |
- 배열은 항상 1개 이상의 요소를 가지고 있으며, 다수의 수가 무조건 하나 존재 한다고 가정하자. | |
## 제한사항 : | |
- 정수형 배열이 주어진다. | |
- 최소한 1개 이상의 요소를 가지고 있으며, 다수의 수가 무조건 배열 내에서 존재한다. | |
## 아이디어 : | |
- 순회를 하면서, 빈도를 저장한다. | |
## 구현 | |
## 테스트 | |
""" | |
from math import floor | |
from typing import List | |
def solve(elements: List[int]) -> List[int]: | |
target_dict = {} | |
length = len(elements) | |
nth = floor(length / 2) | |
for elem in elements: | |
if not target_dict.get(f'{elem}'): | |
target_dict[f'{elem}'] = 1 | |
else: | |
target_dict[f'{elem}'] += 1 | |
result = [] | |
for k, v in target_dict.items(): | |
if v > nth: | |
result.append(k) | |
return result | |
if __name__ == '__main__': | |
input_list = list(map(int, input().split())) | |
print(solve(input_list)) |
Author
dongwooklee96
commented
Jun 23, 2021
•
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment