오늘 어제 오늘 공부 했던 기초적인 알고리즘에 대해서 정리하려고한다.😮💨
이번 주는 알고리즘의 늪에 빠진거 같다... 다음 프로젝트 전에 자바스크립트 공부도 해놔야되는데 큰일....ㅎ
암튼 오늘 내배캠에서 튜터님의 알고리즘 강의도 있었고 뭐랄까
거기서 나뿐만 아니라 모두가 어렵다고 하니까 위로가 되는...?ㅋㅋㅋ
그래도 똑같은걸 몇번이나 돌려보니까 이해가 되긴된다...? 머릿속에 억지로 집어넣기ㅋㅋㅋㅋㅋ😅😅
튜터님이 애매하게 아는 게 제일 안 좋은거라니까 더 확실히 이해할때까지 욕심부리지말고 찬찬히 단계를 넓혀가자!
1.간단한거지만 혼자 별 찍기
for i in range(5):
for j in range(i+1):
print('*',end='')
print()
#별 꺼꾸리코드
for i in range(5):
for j in range(5-i):
print('*',end='')
print()
진짜 별거 아닌데 처음으로 만들어본거라 기분이 째진다.
*
**
***
****
*****
------------------
*****
****
***
**
*
이게 알고리즘 공부하면서 느낀 거지만 파이썬 문법이 확실히 더 직관적이고 짧게 쓰여지는 것 같다.
그래서 다들 코테를 파이썬으로 한다더라는....ㅎ
2.최댓값 구하기
input = [3, 5, 6, 1, 2, 4] 중에서 가장 큰 수 구하기
나는 사실 이거 보고
number = [3,5,6,1,2,4,7]
result = 0
for num in number:
if result < num:
result = num
print(result)
result라는 0 을 가진 변수를 만들어줘서 for문으로 돌려가며 result값과 비교하여 가장 크게 남은 값을 가져오는 방법을
선택했다. 당연히 무수히 많은 방법들이 있겠지만 for문을 굳이 2번돌리지않고도 간단히? 실행할 수 있기 때문이다.
input = [3, 5, 6, 1, 2, 4]
def find_max_num(array):
max_num = array[0]
for num in array:
if num > max_num:
max_num = num
return max_num
result = find_max_num(input)
print(result) #강의 해설
코드는 다르지만 하나씩 돌려가면 비교하는 원리는 비슷한것 같기도...?🤔❓
알고리즘 공부는 문제를 보고 답부터 보지말고 내가 한번 꼭 생각을 해봐야겠다라는 생각이 많이 들었다.
같은 문제에 다양한 답이 나오기도 하고 머랄까 쫌 계획이 잡히는 거 같다 무턱대고 적다가는 내가 뭐랬더라...?각
지금이야 간단한 문제들이라지만 나중에는 휴...ㅎ
3.최빈값 구하기(1)
진짜 여기서 강의 다 끄고 싶었음ㅋㅋㅋ문전박대 당한듯 진짜 ㅠ
최빈값 구하기는 내일 나머지를 정리할 예정임 왜냐면 내가 정리가 여기까지기 때문...ㅎ
사실 지금 하는 해결법은 다음에 정리할 해결방법보다 더 번거로운 것 같다. 그치만 다양한 방법을 아는 것도 도움이
되기 때문에 정리하는 걸로.....
def find_alphabet_occurrence_array(string):
alphabet_occurrence_array = [0] * 26
# 이 부분을 채워보세요!
return alphabet_occurrence_array
① 각 알파벳의 빈도수 찾기
alphabet_occurrence_array = [0] * 26 #우선 알파벳 별 빈도수를 저장하기 위해 길이가 26인 0으로 초기화된 배열
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') #index값
alphabet_occurrence_array[arr_index] += 1 #arr_index는 문자열의 index가 나오고 나온문자에 맞게 횟수를 늘려주기
return alphabet_occurrence_array
print(find_alphabet_occurrence_array("hello my name is sparta"))
먼저 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0...이런 내용을 가진 배열이 생길 것이고 이제 hello my name is sparta라는 문구를
돌면서 알파벳이 아닌 공백부터 continue로 그냥 건너뛰고 진행될 수 있도록 한다.
그리고 이번 알고리즘을 통해서 아스키코드라는것을 알게되었다.
아스키코드를 외울필요는 없다고 하셨지만 그래도 편하고 빠른 코딩을 위해선 알아두는게 좋다고 하셨다.
👇👇이번기회에 알아두자
# 내장 함수 ord() 이용해서 아스키 값 받기
print(ord('a')) # 97
print(ord('a') - ord('a')) # 97-97 -> 0
print(ord('b') - ord('a')) # 98-97 -> 1
위의 예시를 통해서 이 내장함수를 통해 우리는 a,b등의 문자열등을 숫자로 바꿀 수 있게 되었다.
이렇게 저 구문을 for문으로 돌면서 배열 안에 횟수를 누적할 수 있다.
결과값은 a가 3개로 나왔다.
내일은 이 조각구현으로 3개가 나온 "a"가 나오도록 해야겠다.
'TIL✨' 카테고리의 다른 글
CS 기초 TIL(10) (0) | 2022.11.11 |
---|---|
유익한 시간💪💪TIL(09) (0) | 2022.11.10 |
python....알고리즘....TIL(07) (0) | 2022.11.08 |
자바스크립트 문법 TIL(06)💪 (0) | 2022.11.07 |
미니 프로젝트 완료🥰TIL(05) (0) | 2022.11.04 |