문자열 단계의 최상 난이도였다...😅
https://www.acmicpc.net/problem/1157
1157번: 단어 공부
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
www.acmicpc.net
📝 풀이
z=input().upper()
a=list(set(z))
b = []
for i in a:
count = z.count(i)
b.append(count)
if b.count(max(b)) >=2:
print('?')
else:
print(a[(b.index(max(b)))].upper())
먼저 변수 z를 설정하고 lower()를 이용해서 입력받은 문자열을 소문자로만 입력받고 set()을 이용해서 자료형의 중복을 제거한 다음 list()로 묶어주었다.
다음으로 가장 많이 사용된 알파벳을 알기 위해서 b 변수를 대괄호를 이용해서 리스트로 초기화 설정하면 된다.
z = mississipi
a = [ 'm' , 'i' , 's' , 'p' ]
for i in a:
count = z.count(i)
리스트 a 안에 들어있는 각각의 문자들을 for 문으로 반복해주는데 count변수를 새로 만들어서 중복되는 문자를 제거하기 전 입력받은 z 변수에서 그 문자가 몇 개 있었는지 count()를 이용해서 세고, b 변수 리스트에 append() 메소드를 이용하여 추가해준다.
b = [ 4 , 4 , 1 , 1 ]
그리고 if 문을 이용해서 만약 b변수 리스트에 가장 큰 값 max(b)를 count()함수를 이용해서 센 개수가 b 변수 리스트 안에 2개 이상이라면 가장 많이 사용된 알파벳이 여러개 존재하는 경우이기 때문에 '?'를 출력해준다.
💡 중복을 허용하지 않는 set의 특징
- 자료형의 중복을 제거하기 위한 필터 역할로 종종 사용된다.
💡 리스트에 포함된 요소 x의 개수 세기(count)
- list.count(x) 는 리스트 안에 x가 몇 개 있는지 조사하여 그 개수를 돌려주는 함수.
💡 리스트에 포함된 요소 x의 위치 반환(index)
- list.index(x) 는 리스트에 x 값이 있으면 x의 위치 값을 돌려주는 함수.
- 리스트에 값 x가 존재하지 않으면 값오류가 발생한다.
'Study > 코딩' 카테고리의 다른 글
[백준 5622번 파이썬] 다이얼 (0) | 2023.03.08 |
---|---|
[백준 1152번 파이썬] 단어의 개수 (0) | 2023.03.08 |
[백준 10172번 파이썬] 개 (0) | 2023.02.06 |
[백준 10950번 파이썬] A + B - 3 (0) | 2023.02.05 |
[백준 8393번 파이썬] 합 (0) | 2023.02.05 |