728x90
반응형
이번 포스팅은 www.acmicpc.net/problem/1157에서 푼 것을 토대로 작성했습니다.
문자열의 다섯 번째 문제인 단어 공부입니다.
문제
문제를 보고 저 나름대로 해석을 먼저 했습니다.
1. 알파벳 대소문자로 된 단어를 입력받는다.
2. 입력된 알파벳 중에 가장 많이 입력된 알파벳을 대문자로 출력한다.
- 대소문자 구분 x
3. 가장 많이 입력된 알파벳이 여러 개 라면? 를 출력한다.
이렇게 두고 코드를 어떻게 진행할지 생각해 보았습니다.
Python 코드
s = input().upper()
s_set = list(set(s)) # 입력받은 문자열에서 중복 값 제거하여 정렬(무작위)
cnt = []
for i in s_set :
cnt.append(s.count(i)) # 입력의 count를 cnt 리스트에 추가
if cnt.count(max(cnt)) > 1 :
print("?")
else :
print(s_set[cnt.index(max(cnt))])
Python 코드 풀이
s = input().upper()
s_set = list(set(s)) # 입력받은 문자열에서 중복 값 제거하여 정렬(무작위)
입력받은 문자열 S에서
set을 이용하여 중복 값을 제거하였고 list로 만들었습니다.
cnt = []
for i in s_set :
cnt.append(s.count(i)) # 입력의 count를 cnt 리스트에 추가
cnt 리스트에 입력받은 문자열의 알파벳 개수를 추가시켜 줍니다.
알파벳 개수가 추가되는 순서는 s_set에서 정렬된 순서와 같습니다.
if cnt.count(max(cnt)) > 1 :
print("?")
else :
print(s_set[cnt.index(max(cnt))])
그리고 if문으로 cnt 리스트에서 가장 높은 숫자의 개수가 2개 이상일 때
즉, s.count()에서 나온 알파벳에서 가장 많이 있는 알파벳 개수가 2개 이상일 때
"? "를 출력하게 만들고
else를 사용하여
s_set 리스트의 알파벳 순서와 cnt 리스트의 알파벳 개수 순서가 동일하기 때문에
가장 높은 숫자 위치를 s_set으로 적용하여
가장 많은 개수의 알파벳을 출력하게 만들었습니다.
위의 코드에서 어떻게 적용되는지 이해를 쉽게 하기 위해
예시를 들었습니다.
다음 포스팅으로 찾아오겠습니다 :)
728x90
반응형
'Python > 백준 알고리즘' 카테고리의 다른 글
[BaekJoon/Python] : 백준 2908번 - 상수 (0) | 2021.01.11 |
---|---|
[BaekJoon/Python] : 백준 1152번 - 단어의 개수 (0) | 2021.01.11 |
[BaekJoon/Python] : 백준 2675번 - 문자열 반복 (0) | 2021.01.07 |
[BaekJoon/Python] : 백준 10809번 - 알파벳 찾기 (0) | 2021.01.07 |
[BaekJoon/Python] : 백준 11720번 - 숫자의 합 (0) | 2021.01.07 |