본문 바로가기
코딩 테스트/Python_백준

[백준/Python] 1157번 단어 공부 문제

by 모두의 케빈 2023. 3. 27.

■ 1157번 단어 공부 문제

 

출처: 백준 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가 몇 번째 위치에 있는지 식별하기 쉽습니다.

 

 

 

 

 

 

댓글