Programming/Python

[백준/python3] 1157.단어 공부

📢 문제 설명


고민해야할 부분

  • 문자열 내의 알파벳 개수 세기
  • 대소문자 구분 X

✏️ 코드 풀이


s = input().upper()
# print(s)
alphabet = list(set(range(65, 91)))
c_list = []
for x in alphabet:
    c_list.append(s.count(chr(x)))
# print(c_list)

maximum = max(c_list)
m_ind = c_list.index(maximum)

if c_list.count(maximum) > 1:
    print("?")
else:
    print(chr(alphabet[m_ind]))
  1. 문자열을 모두 대문자로 변환한다.
    s = input().upper()​
    최종적으로 출력되는 값도 대문자이므로, 문자열을 모두 대문자로 변환한 후 알파벳의 개수를 세도록 했다.
  2. 대문자 알파벳을 배열로 저장한다.
    alphabet = list(set(range(65, 91)))​
    아스키 코드의 10진수 값에 따라 A부터 Z+1에 해당하는 값을 range의 인자값으로 전달한다.
    set 함수를 통해 A부터 Z까지 정렬하고 list 함수로 리스트화까지 한다.
    주의할 점은, 이후 alphabet 리스트의 값을 사용할 때 chr()함수를 사용해 'A'등으로 변환하여 사용해야 한다.
  3. 최대값의 인덱스를 찾는다.c_list는 문자열에서 각 알파벳에 대한 개수를 차례로 저장한 리스트다. 변수 maximum에는 문자열 내의 알파벳 개수 리스트인 c_list의 최대값을 저장하고, m_ind는 c_list내에서 maximum 값이 위치한 최초의 인덱스 값이다.
    만약 c_list에서 maximum이 2개 이상 존재한다면 문제의 조건에 어긋나므로 ? 를 출력하도록 한다.
  4. maximum = max(c_list) m_ind = c_list.index(maximum) if c_list.count(maximum) > 1: print("?") else: print(chr(alphabet[m_ind]))

SMALL