-
TIL 2023.04.26내일배움캠프 2023. 4. 26. 20:33
오늘 새롭게 알게된 것
for 문도 break와 else를 쓸 수 있다.
def find_prime_list_under_number(number): answer = [] for i in range(2, number+1): for j in answer: if i % j == 0 and j*j <= i: break else: answer.append(i) return answer
예를 든 코드는 number 이하의 수 중 소수만 추려내는 함수이다.
두 번 째 for 문 안에 if 문이 있고 그 조건에 맞는다면 break으로 for 문을 종료한다.
여기서 else 를 같이 써주면 만약 for 문이 break로 종료된게 아니라면 else로 빠지게 된다.
그렇게 두 번 째 for 문에서 모든 j 가 조건에 충족되지 않고 끝난다면 밑의 else 가 실행되는 것이다.
선발대에서 배운 것
재귀함수
스스로 호출하는 함수
장고 개발할 때에는 크게 필요가 없다
코딩 테스트에서는 모르면 손도 못 대는 중요한 문제 유형들이 많다
lfs/dfs, 정렬, 중/전/후위 순회
리턴값이 없는 재귀 함수
리턴값이 있는 재귀 함수
4 + 3 + 2 + 1 + 0
작성 시 유의할 점
- 모든 재귀 함수는 반복문 구현 가능 왜? 코드가 짧기 때문 효율적이기 때문
- 종료 조건. 끝도 없이 호출되어서는 안된다. 언젠가는 실행이 멈추어야 함
종료 조건이 잘못됐다면 RecursionError
최대 지귀 깊이(maximum recursion depth): 재귀함수를 최대로 호출할 수 있는 횟수 파악
print(sys.getrecursionlimit())
재귀 문제 유형: 재귀로 코드를 짤 수 있다는 것을 어떻게 눈치챌 수 있을까?
- 문제푸 는 전체 과정을 펼쳐 생각해보았을 때
문제 풀이 과정의 일부분이 문제를 푸는 전체 과정과 유사하다 - 즉 문제 풀이 과정에서 비슷한 논리가 꼬리에 꼬리를 무는 형태로 이루어져 있음
재귀로 풀 수 있을까?
왜?
를 항상 생각하라
메서드 오버라이딩(Method Overriding)
파생 클래스에서 상위 클래스의 메서드를 재정의 하는 것
파생 클래스에서 상위 클래스의 메서드와 이름은 같지만 다른 기능을 수행하도록 재정의 하는 것
상위 클래스에서 구현된 기능을 파생 클래스에서 필요에 따라 수정하거나 추가해서 사용할 수 있다.
추상 클래스(Abstract Class)
자체적으로 객체를 생성할 수 없고, 상속받는 클래스에서 반드시 구현해야 하는 메서드를 가진 클래스
(상속하여 하위 클래스에서 구현해야 하는 클래스)
즉, 인스턴스를 생성할 수 없는 클래스
'내일배움캠프' 카테고리의 다른 글
TIL 2023.04.28 (0) 2023.04.28 TIL 2023.04.27 (0) 2023.04.27 TIL 2023.04.25 (0) 2023.04.25 TIL 2023.04.24 (0) 2023.04.24 WIL 내일배움캠프 6주차 (0) 2023.04.21