이 프로그램에서는 하나의 문자열을 입력받아 특정 조건에 따라 문자를 분류하고 개수를 세는 방법을 다룹니다. 첫 번째 조건은 한 번만 나타나는 문자를 모두 추출하는 것이고, 두 번째 조건은 두 번 이상 나타나는 문자를 모두 추출하는 것입니다. 그런 다음 각각의 결과를 별도의 문자열로 정렬하여 출력합니다.
이러한 결과를 얻기 위해 따르는 논리적 절차는 아래와 같습니다.
Counter가 입력 문자열을 키(key)와 값(value)으로 구성된 딕셔너리(Dictionary) 형태로 변환합니다.join()메서드를 사용하여 한 번만 나타나는 문자 목록과 두 번 이상 나타나는 문자 목록을 각각 분리합니다.
아래 프로그램에서는 입력 문자열을 받아 위의 로직을 적용해 결과를 확인할 수 있습니다.
예제
from collections import Counter
def Inputstrings(load):
Dict = Counter(load)
occurrence = [key for (key, value) in Dict.items() if value == 1]
occurrence_1 = [key for (key, value) in Dict.items() if value > 1]
occurrence.sort()
occurrence_1.sort()
print('한 번만 나타나는 문자:')
print(''.join(occurrence))
print('두 번 이상 나타나는 문자:')
print(''.join(occurrence_1))
if __name__ == "__main__":
load = "Tutorialspoint has best tutorials"
Inputstrings(load)
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
출력
한 번만 나타나는 문자: Tbehnp 두 번 이상 나타나는 문자: ailorstu
이처럼 collections.Counter를 활용하면 복잡한 반복문 없이도 문자별 등장 횟수를 손쉽게 집계할 수 있으며, 리스트 컴프리헨션과 sort(), join()을 조합해 원하는 형태의 출력 문자열을 깔끔하게 만들 수 있습니다.