| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 채팅
- 1주차
- Git
- vscode
- 알고리즘
- 정보처리기사실기
- 백준
- REDIS
- 파이썬
- 개발일지
- Class
- 2주차
- 정보처리기사
- 미니프로젝트
- js
- WHERE절
- WebSocket
- 프로그래머스
- WIL
- poetry
- 가상환경
- re-id
- sql
- github
- 프로젝트
- 장고
- channels
- 마스킹
- Commpot
- resnet50
Archives
- Today
- Total
개발일기
#2. 빈도수 큰 알파벳 구하기 (아스키코드) 본문

아스키 코드를 기억할 필요는 없다.
필요할 때마다 찾아서 쓰면 된다.
알파벳 문자열에서 가장 많이 나오는 알파벳이 무엇인지 구하는 알고리즘 문제를 풀어보자.
1단계. 문자인지 확인하기
파이썬 내장함수 isalpha()를 사용하면 된다.
str.isalpha() 이렇게 사용한다.
2단계. 알파벳별로 빈도수를 리스트에 저장하기
알파벳별 빈도수를 저장하기 위해 길이가 26인 0으로 초기화된 배열을 만들고,
alphabet_occurrence_array = [0] * 26
a일 때는 0번째 원소에 1을 더하고, b일 때는 1번째 원소에 1을 더하는 식으로 빈도수를 저장해보자.
아스키코드와 ord()함수를 사용하여 알파벳을 숫자로 변환하자.
print(ord('b') - ord('a')) # 98-97 -> 1
print(ord('c') - ord('a')) #99-97 -> 2
이렇게 몇 번째 원소에 +1을 해야하는지 알 수 있다.
def find_alphabet_occurrence_array(string):
alphabet_occurrence_array = [0] * 26
for char in string:
if not char.isalpha():
continue
arr_index = ord(char) - ord("a")
alphabet_occurrence_array[arr_index] += 1
이렇게 알파벳 빈도수가 저장된 alphabet_occurrence_array가 구해진다.
3단계. 빈도수가 가장 큰 인덱스 찾기
이제 alphabet_occurrence_array에서 가장 큰 수를 갖는 값이 몇 번째 원소인지 확인해 이를 다시 알파벳으로 바꿔주면, 우리가 찾는 가장 많이 나온 알파벳이 나올 것이다.
최댓값 찾기 알고리즘을 활용해서 빈도수가 가장 큰 인덱스를 찾아보자.
max_occurrence = 0
max_alphabet_index = 0
for index in range(len(alphabet_occurrence_array)):
alphabet_occurrence = alphabet_occurrence_array[index]
if alphabet_occurrence > max_occurrence:
max_occurrence = alphabet_occurrence
max_alphabet_index = index
빈도수가 가장 큰 인덱스를 찾았으니, 이를 아스키코드에서 알파벳으로 변환해서 return하면 된다.
이때는 char() 함수를 사용해서 알파벳으로 다시 바꾼다.
return chr(max_alphabet_index + ord('a')) #ord('a')==97, ord('b')==98, ...
'오류 및 알고리즘정리본' 카테고리의 다른 글
| #4 프로그래머스 순서쌍개수/최빈값찾기 (0) | 2023.04.06 |
|---|---|
| TypeError: can only join an iterable 에러메세지 (feat. 프로그래머스 문자열 뒤집기, 특정 문자 제거하기 알고리즘) (0) | 2023.04.05 |
| #3. 프로그래머스 알고리즘 정리본 (0) | 2023.04.04 |
| #1 프로그래머스 알고리즘 정리본 (0) | 2023.03.31 |
| 오류) vscode Git 10k 없애기 (0) | 2023.03.21 |