반응형
나의 논리
점수는 0점부터 100점까지 다 나올 수 있으므로 index의 값이 곧 점수다. 따라서 index 값을 그대로 이용하면 되고, 배열의 size는 101이다.
우선 입력되는 수열(scores 배열)을 쭉 받은 뒤에 각 점수가 몇 번씩 나왔는지(cnt 배열) 세준다. 문제에서 요구하는 값은 cnt 배열의 원소 중 가장 큰 값의 index, 즉, 점수를 출력하는 것.
이 때 유의할 점은 최빈수가 여러 개일 수 있다는 것이다. 만약 이런 경우가 발생하면 문제 조건에 따라 점수가 큰 것을 출력해주면 된다.
# date: 2020/10/21
# author: psS2mj
# brief: SWEA_1204_[S/W 문제해결 기본] 1일차 - 최빈수 구하기 (D2)
T = int(input())
for _ in range(T):
tc = int(input())
scores = list(map(int,input().split()))
cnt = [0]*101
for i in scores:
cnt[i] += 1
m = max(cnt)
print("#{} {}".format(tc,max([i for i,v in enumerate(cnt) if v == m])))
핵심은 scores 배열에 입력받은 값들을 쭉 돌면서 해당하는 점수가 몇 번 나왔는지 세기 위해 cnt 배열에 그 횟수를 저장한다는 것이다.
참고로 위 과정을 수행하는 반복문을 작성할 때는
파이썬에서 권장하는 패턴을 지켜서 코드를 작성해보았다.
그리고 두 번째 핵심은 최빈수가 여러 개일때는 그 중 점수가 가장 큰 값을 출력해준다는 것이다.
m = max(cnt)
max([i for i,v in enumerate(cnt) if v == m]))
내 코드에서는 enumerate를 활용했다.
우선, cnt 배열에서 가장 큰 원소의 값을 구한다.
그리고 enumerate를 활용해 반복문을 돌면서 최빈수가 여러 개일 경우(즉, v==m일 때) 그때의 index 값들이 list로 저장된다. 처음에 index가 곧 점수라고 말했지? 그러니까 방금 얻어낸 list 값 중에서 가장 큰 값을 출력해주면 끝!
반응형
'🥇Problem Solving (psS2mj) > SWEA' 카테고리의 다른 글
[SWEA] 1486. 장훈이의 높은 선반 (Python3) (0) | 2020.10.25 |
---|---|
[SWEA] 9940. 순열1 (Python3) (0) | 2020.10.21 |
[SWEA] 1210. [S/W 문제해결 기본] 2일차 - Ladder1 (Java) (0) | 2020.05.10 |
[SWEA] 1208. [S/W 문제해결 기본] 1일차 - Flatten (Java) (0) | 2020.05.09 |
[SWEA] 1206. [S/W 문제해결 기본] 1일차 - View (Java) (0) | 2020.05.09 |
댓글