STUDY 📖/코딩 테스트

[백준] 1157번_단어공부

힘히힘 2022. 4. 14. 15:27
반응형

1157번_단어공부

220414 목요일

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

<문제>

알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.

<입력>

첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. 

<출력>

첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다.

 

imageimage

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
1 2 3 4 5 6 7 8 ··· 38