[PYTHON] 1157 단어 공부 - 문자열 변경 메서드 정리(대문자, 소문자, 대문자 소문자 반대로 반환, 첫 글자 대문자)

    https://www.acmicpc.net/problem/1157

     

    1157번: 단어 공부

    알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

    www.acmicpc.net

    문제 풀이

    • 출력을 대문자로 하기때문에 input값을 대문자로 변경한다.
    • dict에 중복된 값과 중복된 개수를 저장한다.
    • dict의 value의 최대값이 여러 개이면 ?을 출력하고, 하나이면 그 value 최대값을 출력한다.

    solution

    import sys
    str = (sys.stdin.readline().strip()).upper() # 입력받은 문자열을 모두 대문자로 변경
    result = {}
    for w in list(set(str)): # 문자를 key로 문자의 중복 개수를 value로 딕셔너리에 담음
      result[w] = str.count(w)
    max_key = [k for k,v in result.items() if max(result.values()) == v] # 중복 개수의 최대값인 key값을 리스트에 담음
    if len(max_key) > 1: # 리스트의 길이가 1 이상이면 최댓값이 여러 개임으로 '?'을 출력함
      print('?')
    else:
      print(max_key[0])

    추가적인 문법 정리 - 문자열을 변경하는 메서드

    • 위 문제에서 upper 메서드를 사용하여 문자열을 모두 대문자로 바꾸어 사용하였습니다.
    • 이처럼 소문자, 대문자 등 여러가지로 문자열을 변경하는 메서드를 정리했습니다.
    meg = 'Hi! Everyone!'
    
    # str.capialize()
    # 문자열 첫 글자 대문자, 나머지는 소문자로 반환
    print(meg.capitalize()) # Hi! everyone!
    
    # str.title()
    # 단어 첫 글자 대문자, 나머지 소문자
    print(meg.title()) # Hi! Everyone!
    
    # str.upper()
    # 모든 글자를 대문자로 반환
    print(meg.upper()) # HI! EVERYONE!
    
    # str.lower()
    # 모든 글자를 소문자로 반환
    print(meg.lower()) # hi! everyone!
    
    # str.swapcase()
    # 대문자는 소문자로, 소문자는 대문자로 반환
    print(meg.swapcase()) # hI! eVERYONE!

    댓글