문자열에서 가장 드물게 등장하는(빈도가 가장 낮은) 문자를 찾아야 하는 경우, 파이썬의 Counter 클래스를 사용하면 간단하게 해결할 수 있습니다. Counter로 각 글자의 개수를 센 뒤, min 함수를 사용해 개수가 가장 작은 값을 가진 문자를 추출하는 방식입니다.
동작 원리
Counter는 문자열을 입력받으면 각 문자를 키(key)로, 등장 횟수를 값(value)으로 하는 딕셔너리 형태의 객체를 반환합니다. 여기에 min 함수에 key=my_result.get 옵션을 지정하면, 문자 자체가 아닌 각 문자의 개수를 기준으로 비교하여 빈도가 가장 낮은 문자를 얻을 수 있습니다.
예제 코드
다음은 실제 동작을 보여주는 예제입니다.
from collections import Counter
my_str = "highland how"
print("The string is : ")
print(my_str)
my_result = Counter(my_str)
my_result = min(my_result, key = my_result.get)
print("The minimum of all characters in the string is : ")
print(my_result)실행 결과
The string is : highland how The minimum of all characters in the string is : a
코드 설명
collections모듈에서Counter클래스를 임포트합니다.분석할 문자열을 정의하고 콘솔에 출력합니다.
Counter를 사용하여 문자열 내 모든 문자의 등장 횟수를 계산합니다.
계산 결과를 변수
my_result에 할당합니다.min 함수에
key = my_result.get을 지정하여 개수 기준 최솟값에 해당하는 문자를 구합니다.결과를 다시 같은 변수에 할당한 후 콘솔에 출력합니다.
참고 사항
위 예제에서 문자열 "highland how"에는 공백도 하나의 문자로 계산됩니다. 공백은 한 번만 등장하지만 결과가 'a'로 나온 이유는, 'a' 역시 한 번만 등장하며 Counter가 요소를 순회하는 순서상 먼저 만난 문자가 반환되기 때문입니다. 공백을 제외하고 싶다면 my_str.replace(" ", "")로 공백을 제거한 후 Counter에 전달하면 됩니다. 또한 최빈도가 같은 문자가 여러 개일 경우 모든 후보를 얻으려면 리스트 컴프리헨션으로 조건을 필터링하는 방법을 사용할 수 있습니다.