[Algorithm] 1157. 단어 공부

유지민·2024년 1월 25일
0

Algorithm

목록 보기
11/75
post-thumbnail

1157. 단어 공부

1157 문제 보기

접근 방식

이 문제로 블로그를 작성하는 이유는!
파이썬 문법 중 모르는 부분이 조금씩 있어서 정리하려고!!!

쉬운 문제였어서 접근 방식이라고 할 것이 없지만...
26개의 알파벳 출현 빈도 수를 저장하는 배열을 만들어둔 뒤
ord('a')가 97의 값을 가짐을 고려해, chr(97)을 활용하여 알파벳 배열 인덱스에 count값을 넣어줬다.

빈도 수가 동일한 알파벳이 있을 경우 ?를 출력해야 하므로, 빈도 수가 가장 많은 인덱스를 candi 배열에 저장해주었다.
이 때 처음에는 alpha.index(max(alpha))로 코드를 작성했지만 빈도 수가 가장 높은 첫번째 인덱스만 저장되었기에, filter() 함수를 사용해 인덱스 값을 모두 저장해줬다.

최종 코드

arr = list(map(str, input().lower()))
alpha = [0 for _ in range(26)]

for i in range(len(alpha)):
  alpha[i] = arr.count(chr(97 + i))

candi = list(filter(lambda x:alpha[x] == max(alpha), range(len(alpha))))
print(chr(97 + candi[0]).upper() if len(candi) == 1 else '?')

배운점

1️⃣ ord('a'): 97, chr(97): a
2️⃣ 배열 중 가장 큰 값을 가진 인덱스를 알아내는 방법
alpha.index(max(alpha)) -> 하나의 인덱스 값
3️⃣ 여러개의 인덱스를 구하려면?
candi = list(filter(lambda x:alpha[x] == max(alpha), range(len(alpha))))

profile
끊임없이 도전하며 사고하는 주니어 Web 개발자 유지민입니다.

0개의 댓글