🗒️ 파이썬 코드 풀이
T = int(input())
for tc in range(1,T+1):
N = int(input())
lst = list(map(int,input().split()))
score = [0] * 101
for ls in lst:
score[ls] += 1
mx = max(score)
mx_idx = 0
for i in range(len(score)):
if mx == score[i]:
mx_idx = max(mx_idx,i)
print(f"#{tc} {mx_idx}")
1. 0~100까지 길이의 리스트를 만들어준다. 각각의 인덱스 번호가 점수가 되는 것이다.
ex) 0 인덱스 = 0 점
2. 입력받은 lst를 반복문 돌리고, 해당 점수대 인덱스 번호의 값을 +1 한다.
3. 그 후 max 값을 추출하고, max값 여러개인 경우를 생각해서 if 문을 돌린다.
4. max값과 같은 idx를 추출하고, 최대값을 갱신한다.
🧐 문제 코멘트
이 문제는 그렇게 어렵지는 않다. 딕셔너리 형태로 풀어도 되고, 리스트 형태로 풀어도 상관없다.
다만, 한가지 주의해야하는 것은 max값이 여러개인 경우이다.
문제만 잘 읽으면 큰 문제 없는데, 문제를 잘 못 읽어서 한번 에러가 뜬 문제이다.
📚 문제
어느 고등학교에서 실시한 1000명의 수학 성적을 토대로 통계 자료를 만들려고 한다.
이때, 이 학교에서는 최빈수를 이용하여 학생들의 평균 수준을 짐작하는데, 여기서 최빈수는 특정 자료에서 가장 여러 번 나타나는 값을 의미한다.
다음과 같은 수 분포가 있으면,
10, 8, 7, 2, 2, 4, 8, 8, 8, 9, 5, 5, 3
최빈수는 8이 된다.
최빈수를 출력하는 프로그램을 작성하여라 (단, 최빈수가 여러 개 일 때에는 가장 큰 점수를 출력하라).
[제약 사항]
학생의 수는 1000명이며, 각 학생의 점수는 0점 이상 100점 이하의 값이다.
[입력]
첫 번째 줄에 테스트 케이스의 수 T가 주어진다.
각 테스트 케이스의 첫 줄에는 테스트 케이스의 번호가 주어지고 그 다음 줄부터는 점수가 주어진다.
[출력]
#부호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 테스트 케이스에 대한 답을 출력한다.
'알고리즘 > 알고리즘_swea' 카테고리의 다른 글
[Python][SWEA] 2806. N-Queen D3 (0) | 2024.05.18 |
---|---|
[Python][SWEA] 2001. 파리 퇴치 D2 (0) | 2024.05.18 |
[Python][SWEA] 1954. 달팽이 숫자 D2 (0) | 2024.05.18 |
[Python][SWEA] 1244. [S/W 문제해결 응용] 2일차 - 최대 상금 (0) | 2024.05.18 |
[Python][SWEA] 20728. 공평한 분배 2 D3 (0) | 2024.05.18 |