728x90
백준 문제 1157번 단어공부
쉽다고 무시하고 넘어간 문제인데, VSC에서 디버그를 아무리 돌려도 답이 맞게 나오는데, 정답은 틀렸다고 나왔다.
고민하다가 구글링을 해봤고 의외로 공부할 만한 것들이 많이 나와서 별도로 정리하려 한다.
해당 블로그를 참고했다.
문제
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
정답 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
string = input().upper()
unique = list(set(string)) # 입력받은 문자열에서 중복값을 제거
cnt_list = []
for x in unique :
cnt = string.count(x)
cnt_list.append(cnt) # count 숫자를 리스트에 append, 이때 문자열과 중복된 갯수는 인덱스가 대응한 상태가 된다.
# 가령 M의 인덱스가 unique에서 0이면, M의 갯수 4가 cnt_list에서 인덱스가 0이다.
if cnt_list.count(max(cnt_list)) > 1 : # count 숫자 최대값이 중복되면
print('?')
else :
max_index = cnt_list.index(max(cnt_list)) # count 숫자 최대값 인덱스(위치)
print(unique[max_index])
|
cs |
풀이
코드 상단에서 문자열을 입력받고 중복 요소를 제거한 변수를 생성한다.
* python set 내장 함수
문자열 혹은 list 즉 집합의 성질을 가지고 있는 원소들에서 중복된 요소를 제거한 결과값을 반환한다. 이때 결과값의 형태는 dictionary이지만 key:value의 형태가 아니다.
set 내장함수의 가장 중요한 역할은 바로 중복된 요소를 제거해 준다는 것이다.
코드 중반부, 알파벳이 사용된 횟수를 리스트로 저장한다.
* count 내장함수
문자열/배열.count(요소) -> 문자열 혹은 배열 내에 요소가 몇 개 포함되어 있는지를 계산해준다. 문자열을 넣어도 가능하며, 대소문자를 구분한다.
728x90
'CS STUDY > Algorithm&Data structure' 카테고리의 다른 글
[Python]알고리즘 문제풀이4 (0) | 2021.01.14 |
---|---|
[python]알고리즘 문제풀이3 (0) | 2021.01.12 |
[Python] 알고리즘 문제풀이1 (0) | 2021.01.06 |
정수론 - 소수(에라토스테네스의 체) (0) | 2020.12.30 |
[JS]알고리즘 문제풀이 13 (0) | 2020.12.30 |