
아예 감도 못잡아서 바로 풀이로 들어간다
[풀이]
word = input().upper() # 입력받은 문자열을 대문자로 변환
alphabet_count = {}
# 알파벳별 빈도 수 계산
for char in word:
if char in alphabet_count:
alphabet_count[char] += 1
else:
alphabet_count[char] = 1
# 가장 많이 사용된 알파벳 찾기
max_count = max(alphabet_count.values())
most_common = [k for k, v in alphabet_count.items() if v == max_count]
# 가장 많이 사용된 알파벳이 여러 개인 경우 '?' 출력
if len(most_common) > 1:
print('?')
else:
print(most_common[0]) # 가장 많이 사용된 알파벳 출력
깨달은 점
1. 딕셔너리가 key value로 이루어졌다는 정도만 알 뿐 응용을 해본적이 없다. 딕셔너리에 친숙해지자
2. alphabet_count[char]처럼 딕셔너리 변수 명에 [key이름]을 하면 key 값이 추가된다
3. items에 대해 몰랐다. item은 딕셔너리에서 key, value를 반환해주는 함수이다
꼭 다시풀어보자!
=> chat gpt 코드였는데 런타임 오류가 발생한다
[런타임 오류난 내 수정 코드]
if sorted(cnt_list)[-1]==sorted(cnt_list)[-2]:
print('?')
else:
print(alphabet[cnt_list.index(max(cnt_list))])
테스트 해보기 sorted()라는 함수의 메모리 할당량이 높은 것 같다 사용을 자제하자
[다른블로그코드]
words = input().upper()
unique_words = list(set(words)) # 입력받은 문자열에서 중복값을 제거
cnt_list = []
for x in unique_words :
cnt = words.count(x)
cnt_list.append(cnt) # count 숫자를 리스트에 append
if cnt_list.count(max(cnt_list)) > 1 : # count 숫자 최대값이 중복되면
print('?')
else :
max_index = cnt_list.index(max(cnt_list)) # count 숫자 최대값 인덱스(위치)
print(unique_words[max_index])
논리
1. word를 구성한 알파벳들의 list를 만든다
2. 알파벳 list 안에 있는 알파벳이 있으면 그 수를 센다
3. 만약 그 수가 중복되면 ?
아니면 최대값의 인덱스를 통해 출력한다
[몰랐던점]
cnt_list.index(max(cnt_list))같은 .index 사용법을 몰랐음
words.count(x)같은 .count() 사용법을 몰랐음
기초가 부족하다.... ㅠ