회사 이름이 문자열이라고 가정합니다. 우리는 회사 이름에서 가장 흔한 세 글자를 찾아 다음 규칙에 따라 표시해야 합니다 -
- 가장 자주 나오는 세 글자 선택
- 내림차순으로 정렬
- 일부 문자의 빈도가 같으면 알파벳 순서로 사용
따라서 입력이 s ="TUTORIALSPOINT"와 같으면 출력은 [[3, 'T'], [2, 'I'], [2, 'O']]
가 됩니다.이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- x :=s의 문자와 문자 빈도를 포함하는 지도
- res :=새 목록
- x의 각 i에 대해 다음을 수행합니다.
- ret에 쌍(x[i], i) 삽입
- res :=알파벳순으로 정렬된 후의 res
- res :=역순으로 빈도를 기준으로 정렬된 후의 res
- res에서 처음 세 항목 반환
예
더 나은 이해를 위해 다음 구현을 살펴보겠습니다.
from collections import Counter def solve(s): x = Counter(s) res = [] for i in x: res.append([x[i], i]) res = sorted(res, key=lambda cnt: cnt[1]) res = sorted(res, key=lambda cnt: cnt[0], reverse=True) return res[:3] s = "TUTORIALSPOINT" print(solve(s))
입력
"TUTORIALSPOINT"
출력
[[3, 'T'], [2, 'I'], [2, 'O']]