■ 1157번 단어 공부 문제
■ 코드 풀이
저는 이 문제를 dict 자료형을 사용해서 어렵고 지저분하게 풀었는데요. 찾다 보니, 조금 더 깔끔한 코드가 있어서 스터디 차원에서 그 코드를 가져왔습니다. 제가 생각했을 때 이 코드에서의 핵심은 set과 count 메서드를 활용하는 것 같습니다.
words = input().upper()
unique_words = list(set(words))
words_counts = list()
for unique_word in unique_words:
word_count = words.count(unique_word)
words_counts.append(word_count)
if words_counts.count((max(words_counts))) > 1:
print('?')
else:
max_idx = words_counts.index(max(words_counts))
print(unique_words[max_idx])
words_count = words.count(unique_word)
저는 문자열에서도 count를 사용할 수 있는지 몰랐는데요. 그래서 문자열을 개별 단어의 list로 분할하여 어렵게 풀었었습니다. 그래서 제 오늘 첫 번째 러닝 포인트는 '문자열에서도 count를 사용할 수 있다.' 입니다.
words_counts.count((max(words_counts))) > 1
유니크한 단어 별로 count한 list에서 '최대 숫자'의 개수를 다시 count한 것이 2 이상이면 '?'를 출력하라는 의미입니다. 오늘의 두 번째 러닝 포인트는 'count 메서드를 잘 사용하면 정말 편리하다.'
max_idx = words_counts.index(max(words_counts))
if문의 조건에 의해서 else문을 실행하는 경우는 가장 많이 사용된 단어가 1개일 경우 뿐입니다. value가 1개밖에 없다면 index 메서드를 활용하여 해당 value가 몇 번째 위치에 있는지 식별하기 쉽습니다.
'코딩 테스트 > Python_백준' 카테고리의 다른 글
[백준/Python] 2941번 크로아티아 알파벳 문제 (0) | 2023.03.29 |
---|---|
[백준/Python] 4344번 평균은 넘겠지 문제 (0) | 2023.03.28 |
[백준/Python] 10988번 팰린드롬인지 확인하기 문제 (0) | 2023.03.26 |
[백준/Python] 10812번 바구니 순서 바꾸기 (0) | 2023.03.25 |
[백준/Python] 2444번 별 찍기-7 문제 (0) | 2023.03.24 |
댓글