티스토리 뷰
코딩 테스트/SW Expert Academy
[SW Expert Academy] 1204. [S/W 문제해결 기본] 1일차 - 최빈수 구하기 파이썬 정답 코드
leego 2023. 5. 3. 23:46
1. 문제 내용
2. 접근 방식
점수 종류가 101개이고 입력된 점수 데이터가 1,000개이다. 따라서 최악의 경우라도, 점수 종류 for문 안에서 특정 점수를 count하는 연산을 적용하여도 약 100,000번의 연산만 수행하면 된다.
입력된 점수 데이터의 중복을 없애 점수의 종류로 for문을 돌린다. 각 점수의 빈도수를 파악한 후 딕셔너리에 넣는다. 이때 딕셔너리의 key는 빈도수, value는 점수이다.
만약 딕셔너리에 동일한 빈도수(key)가 존재한다면, 점수가 더 큰 값이 value로 저장되도록 한다.
이후 딕셔너리에서 가장 큰 key 값의 value를 출력한다.
3. 정답 코드
- 집합을 사용하여 점수 종류의 중복 제거 ex) [ 8, 5, 5, 10 ]을 { 8, 5, 10 }으로 변경
- 딕셔너리 이용 ex) { 빈도수: 점수 }
T = int(input())
for test_case in range(1, T + 1):
case = int(input())
data = list(map(int, input().split()))
count = dict()
for score in set(data) :
key = data.count(score)
if key in count :
count[key] = max(count[key], score)
else :
count[key] = score
print(f'#{case} {count[ max(count) ]}')
728x90
'코딩 테스트 > SW Expert Academy' 카테고리의 다른 글
[SW Expert Academy] 1983. 조교의 성적 매기기 파이썬 정답 코드 (0) | 2023.05.04 |
---|---|
[SW Expert Academy] 1946. 간단한 압축 풀기 파이썬 정답 코드 (0) | 2023.05.04 |
[SW Expert Academy] 1984. 중간 평균값 구하기 파이썬 정답 코드 (0) | 2023.05.04 |
[SW Expert Academy] 1928. Base64 Decoder 파이썬 정답 코드 (0) | 2023.05.04 |
[SW Expert Academy] 1859. 백만 장자 프로젝트 파이썬 정답 코드 (0) | 2023.05.03 |