반응형
1157번_단어공부
220414 목요일
https://www.acmicpc.net/problem/1157
<문제>
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
<입력>
첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다.
<출력>
첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.
string = input()
string=string.upper()
set_string = set(string)
set_string = list(set_string)
count_string= []
for i in set_string:
count_string.append(string.count(i))
if count_string.count(max(count_string)) >1:
print("?")
else:
print(set_string[count_string.index(max(count_string))])
너무 헷갈렸다... 은근 시간을 많이 소요했다.
:set 집합을 사용하여 중복되는 리스트 값을 묶어주었다.
:set 집합에 있는 항목을 입력받은 string에 몇 개가 해당하는 지 계산해주고 해당 개수들을 count_string이라는 리스트에 저장해두었다.
:max가 동일한 경우 ?가 나와야하기 때문에 count_string에서 가장 큰 값이 몇개가 해당하는 지 세주어 2이상 일 경우 ?가 출력하도록 하였다.
- x.upper() : 대문자 변환
- max(x) : x에서 가장 큰 값 반환
- count(x) : x가 몇 개 있는 지 개수 세어줌
+) 추가
string = input().upper() 로 한번에 사용 가능!
set_string 등 지칭하는 단어가 긴데 간략하게 사용하기!
count_string -> cnt
'STUDY 📖 > 코딩 테스트' 카테고리의 다른 글
[백준] 2908번_상수 (0) | 2022.04.16 |
---|---|
1152번_단어의개수 (0) | 2022.04.15 |
[백준] 1157번_단어공부 (0) | 2022.04.14 |
[백준] 2675번_문자열 반복 (0) | 2022.04.13 |
[백준] 10809번_알파벳 찾기 (0) | 2022.04.12 |
[백준] 11654번 아스키코드 (0) | 2022.04.11 |