값에 대응하는 칸에 횟수를 쌓아요
리스트·함수·반복을 배웠어요. 값의 범위가 0~3이면 길이 4의 리스트를 만들어 각 번호의 등장 횟수를 담을 수 있어요. [0] * 4는 정수 0인 칸을 4개 만들어요.
values = [2, 1, 2, 3]
counts = [0] * 4
for value in values:
counts[value] = counts[value] + 1
counts는 [0, 1, 2, 1]이 돼요. values의 값 2를 counts의 인덱스로 쓰고 해당 칸을 증가시켜요. 그림에서 값 2와 횟수 2의 의미를 구분해요.
횟수와 선택할 번호를 함께 유지해요
가장 자주 나온 번호를 찾을 때 best는 번호이고 counts[best]는 그 번호의 횟수예요. 값이 같은 동점이라면 어느 번호를 고를지 계약이 필요해요.
예제에서는 2가 두 번 나와 가장 많아요. [1, 3, 1, 3]이라면 1과 3이 각각 두 번이에요. 작은 번호를 고르는 규칙이면 1을 남겨요. 번호를 작은 순서로 읽으며 더 큰 횟수에만 바꾸면 같은 횟수에서는 먼저 고른 번호가 남아요.
함수는 받은 values를 읽고 결과 번호만 반환해요. counts의 값을 반환하면 번호가 아닌 횟수가 되므로 구분해요.
직접 풀어봐요
solution(values)를 완성해 가장 자주 등장한 번호를 반환해요. 동점이면 작은 번호를 반환해요.
values 길이는 1100, 각 값은 09예요. 실행용 입력은 첫 줄 n, 이 후 n 줄에 번호예요. 출력은 반환한 번호예요. 입력은하네스가 처리해요.
예시 1: values =[2, 1, 2, 3] → 2예요.
예시 2: values =[1, 3, 1, 3] → 1. 동 점에서 작은 번호예요.
예시 입력
4 2 1 2 3
예상 결과
2
예시 입력
4 1 3 1 3
예상 결과
1
핵심 개념
basic-sort-search: 리스트 인덱스를 번호에 대응시켜 빈도를 쌓고, 동 점 기준을 비교 식에 반영해요.