자료구조,알고리즘(Python)/백준

단어 공부:1157(Python)

드롱드롱 2024. 10. 26. 14:15

이번 주말은 여태까지 틀린 문제들을 모아놓고 모두 해결해보기로 했다.

 

그중에서 이 문제는 딕셔너리를 활용한 문제이다.

본인이 딕셔너리가 약하다고 판단되기에 블로그에 내 풀이와 다른 사람의 풀이, 그리고 문제를 풀 때 자주 활용되는 딕셔너리의 성질과 활용에 대해 알아보고자 이 문제를 블로그에 글을 쓰게 되었다.

 

https://www.acmicpc.net/problem/1157

 

1. 내 풀이

a = input()
word=a.lower()

dict1 = {}
list1 = []

for i in word:
    if i not in list1:
        list1.append(i)
        dict1[i] = 1
    else:
        dict1[i] += 1

sorted_dict = sorted(dict1.items(), key= lambda item:item[1], reverse=True)

if len(list1) >1 :
    if sorted_dict[0][1] == sorted_dict[1][1]:
        print('?')
    else:
        print(sorted_dict[0][0].upper())
else:
    print(sorted_dict[0][0].upper())

 

 

깔끔하게 딕셔너리 하나로만 문제를 해결하고 싶었는데 그냥 단어에 포함되는 알파벳을 저장시킨 리스트를 하나 더 만들어서 해결했다. 깔끔하게 문제를 해결했다기보다는 내가 딕셔너리 활용이 약하기 때문에 문제를 좀 더 돌아서 해결한 느낌이라 다른 사람이 어떻게 문제를 해결했는지 궁금했다.

 

 

 

 

[Python] Dictionary - Key / Value로 내림차순/오름차순 하기

key를 기준으로는 sorted()를 사용하면 오름차순으로 정렬할 수 있다. argument를 1개 받으며, dict.items()를 넣어주면 오름차순으로 정렬된다. tuple로 이루어진 list를 반환한다.key만 출력하는 경우에는 s

velog.io

 

아울러 딕셔너리 key와 value sort할 때 참고하기 너무 좋은 블로그 글을 첨부한다!

 

 

 

 

 

 

 

 

2. 다른 사람 풀이(딕셔너리 이용 x)

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])

 

 

 

백준 1157번 [파이썬 알고리즘] 단어 공부

[Python] 백준 알고리즘 온라인 저지 1157번 : 단어 공부 Python3 코드 words = input().upper() unique_words = list(set(words)) # 입력받은 문자열에서 중복값을 제거 cnt_list = [] for x in unique_words : cnt = words.count(x) cnt_l

ooyoung.tistory.com

 

 

구글링 해보니까 딕셔너리를 이용하기 보다 대부분 리스트를 통해 count 함수와 index 함수로 문제를 해결하였다.

'자료구조,알고리즘(Python) > 백준' 카테고리의 다른 글

9461:파도반 함수(DP)  (0) 2024.12.01
백준 200문제 돌파!  (0) 2024.11.28
1032:명령 프롬프트  (4) 2024.10.23
1547 : 공[Python]  (4) 2024.10.13
11582 : 치킨 TOP N (Python)  (0) 2024.09.10