오늘 배운 것
1. 어레이와 링크드리스트
조회할땐 배열 Array
추가 및 사입할땐 연결리스트 LinkedList
2. 클래스
클래스는 객체를 생성하기 위한 템플릿이다. (CSS의 클래스와 다름!)
class를 통해 원하는 구조의 객체 틀을 짜놓고, 비슷한 모양의 객체를 공장처럼 찍어낼 수 있다.
쉽게 생각해서 클래스 = 붕어빵 기계, 그리고 객체 = 붕어빵 으로 보면 된다.- 파이썬 기초문법
3. 이진탐색
이진 탐색은 탐색의 범위를 절반씩 좁혀가며 데이터를 탐색하는 알고리즘입니다.
(순차탐색은 처음부터 끝까지 가는 알고리즘)
4. 재귀함수
함수 안에서 함수 자기자신을 호출하는 방식을 재귀호출(recursive call)이라고 합니다.
재귀호출은 일반적인 상황에서는 잘 사용하지 않지만 알고리즘을 구현할 때 매우 유용합니다.
보통은 무한루프에 빠질 수 있으니, 빠져나갈 수 있는 if문을 써야할지 생각해봐야 합니다.
오늘 느낀 점
input = "소주만병만주소"
def is_palindrome(string):
if len(string) <= 1:
return True
if string[0] != string[-1]:
return False
return is_palindrome(string[1:-1])
print(is_palindrome(input))
재귀함수 부분에서
마지막 return 값이 이해가 안됬다.
맨끝부분을 빼야하니 [1 : -2]가 아닌가? 란 생각에 계속 빠졌다.
팀원에게 물어보고 대화를 하다보니 머릿속에 !!! 느낌표가 생겼다.
[1(이상) : -1(미만)] 이기 때문에 생긴 내머릿속 오류였다.
첫 재귀함수 루프를 돌때,
[1]은 [주]를 뜻할 것이고
[-1]은 [소]니까 틀린게 아니야?! 가 아니고,
-1 미만이기에 -2인 끝에서 두번째를 출력하는 것이 맞다!
그러므로 string[1:-1]은 두번째 값과, 끝에서 2번째 값을 출력하는 것이다.
슬라이싱은 이상(>=) 과 미만 (<)이기에 헷갈릴 수 있는 부분이고
답답했던 부분을 깨달아서 뿌듯한 하루였다.
'일기 > TIL' 카테고리의 다른 글
TIL: Today I Learned 11일차 (0) | 2022.11.28 |
---|---|
TIL: Today I Learned 10일차 (0) | 2022.11.25 |
TIL: Today I Learned 8일차 (0) | 2022.11.23 |
TIL: Today I Learned 7일차 (0) | 2022.11.22 |
TIL: Today I Learned 6일차 (0) | 2022.11.21 |