728x90
📚문제
📝풀이
# 1157번 단어공부
word = input().lower() # mississipi
word_uniq = list(set(word)) # m,i,s,p
freq = []
for i in word_uniq:
freq.append(word.count(i)) # [1,4,4,1]
if freq.count(max(freq))>=2:
print('?')
else:
print(word_uniq[freq.index(max(freq))].upper())
📌막힌 부분
1. 문제
=> 대/소문자 구분이 없는 것
zZa에서 z의 개수와 Z의 개수 셀 때
word = 'zZa'
for i in word:
word.count(i) + word.count(i.upper())
이런식으로 처음에는 복잡하게 소문자와 대문자의 개수를 각각 세서 합치는 것을 생각했는데
대문자가 올 경우에
앞의 코드(word.count(i))에서도 'Z'를 count 하고
뒤의코드(word.count(i.upper()))에서도 해준 'Z'를 세기 때문에 원하는 값이 나오지 않음
1. 해결
=> 값을 입력 받을 때 우선 다 소문자로 만들어준 다음에 마지막에 출력만 .upper()로 해주기
2. 문제
=> 알파벳 빈도수 셀 때 같은 알파밧에 대해서 중복된 값이 나오는 것
ex) count('i')를 하게 되면 Mississipi에서 두 번째 i도 4로 출력하고 5번째 i도 4로 출력
2. 해결
=> 단어를 중복제거하여 uniq한 알파벳만 남기기 (m,i,s,p)
list(set(mississipi)) # set 함수는 중복의 제거 기능을함.
3. 문제
=> index()함수의 기능을 가끔 헷갈림
3. 해결
=> 어떤 문자나 리스트에서 ()안에 문자열 혹은 숫자가 어느 위치에 있는지 인덱스로 출력
x = ['A', 'B', 'C']
x.index('A')
---------------------
0
한참 보고 생각해보다가 안 되서 구글링해서 참고
브론즈 1만되도 어렵다...
728x90
'Python(알고리즘,문제풀이) > BOJ (Bronze V)' 카테고리의 다른 글
25206번 / 너의 평점은 (0) | 2023.07.04 |
---|---|
1316번 /그룹 단어 체커 (0) | 2023.07.03 |
2941번 / 크로아티아 알파벳 (0) | 2023.07.02 |
10988번 / 팰린드롬인지 확인하기 (0) | 2023.06.30 |
2444번 / 별찍기 -7 (0) | 2023.06.29 |