#50. 백준 1157번 문제 풀이: 단어 공부 문제 원본 보기
알파벳 대소문자로 된 단어가 주어지면, 가장 많이 사용된 알파벳을 출력하시오. 단, 대소문자 구분은 하지 않는다. 입력: 알파벳 대소문자로 이루어진 1,000,000자 이내 단어. 출력: 가장 많이 사용된 알파벳을 대문자로 출력. 가장 많은게 여러개이면 ? 출력.
입력/출력
--입력--
Mississipi
--출력--
?
--입력--
zZa
--출력--
Z
--입력--
z
--출력--
Z
--입력--
baaa
--출력--
A
문제풀이+해설
다음 순서로 루틴을 작성하면 된다.
1. 대소문자 구분을 안한다고 했고, 대문자로 출력하라고 했으니 문자열을 모두 대문자로 변경해 준다.
2. 알파벳 26자에 대한 배열을 만들고 0으로 초기화 한다.
3. 문자열을 하나씩 확인하며 해당하는 문자 배열값을 +1씩 증가해 준다.
4. 문자 카운트 배열에서 제일 큰값을 찾아낸다.
5. 제일 큰값을 가진 알파벳을 찾아낸다. 두개 이상일 경우 ? 를 출력한다.
code sol.
cks = [0]*26 
# 알파벳 개수만큼 0으로 초기화된 리스트를 만든다.
s = input() # 문자열을 입력받는다.
s = s.upper() # 문자열을 모두 대문자로 변환
an = ord('A') # 문자를 순서값으로 만들기 위해 A의 아스키코드값을 대입
for c in s: # 문자열에서 문자하나씩 c에 넣어준다.
  cks[ord(c) - an] += 1 # 문자에서 'A'값을 빼주면 알페벳 순서값이 된다.
  # 해당 알파벳 순서에 값을 증가시킨다.
maxn = 0 # 최대값. 초기값 0  
for n in cks: # 체크레스트에서 값을 하나씩 꺼내준다.
  if maxn < n: # 새로운 값이 더 크면 그 값을 최대값으로
    maxn = n 
maxa = "" # 제일 많은 알파벳.
for i in range(26): # 알파벳중에 제일 많은 알파벳 찾기
  if cks[i] == maxn: # 제일 큰값이면
    if maxa != "": # 이미 다른 값이 있다면 ? 대입하고 루프 끝냄
      maxa = "?" 
      break # 끝냄
    maxa = chr(an + i) # 순서값에 'A' 코드값을 더해서 문자로 변환 대입

print(maxa) # 최대사용 알파벳 출력
© 코드솔 - CodeSol. All Rights Reserved.