1. 파이썬 기초 강좌 완강
튜플: 소괄호 사용, 불변성을 가진다, 순서를 가지므로 인덱싱 사용 가능하다(리스트와 마찬가지로)
집합(set)
set(리스트) = 집합 -> 중복이 제거된다.
교집합: 집1 & 집2
합집합: 집1 | 집2
차집합: 집1 - 집2
*집합계산은 필수로 set이후!
f-string:
(파이썬 3.6 이상) 문자열을 더 쉽게 formatting하기 위함 ->
문자열 포맷은 왜 필요할까?:특정 값을 특정 위치에 특정하기 위해
for s in scores:
name = s['name']
score = str(s['score'])
print(f'{name}은 {score}점입니다')
예외처리(try - except): 중간에 에러가 나도 멈추지 말고 계속 진행하기 위해
*하지만 이렇게 하면 어디서, 왜 에러가 나는지 바로 확인할 수가 없다
people = [
{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
{'name': 'smith', 'age': 17},
{'name': 'ben', 'age': 27},
{'name': 'bobby'},
{'name': 'red', 'age': 32},
{'name': 'queen', 'age': 25}
]
for person in people:
try:
if person['age'] > 20:
print (person['name'])
except:
name = person['name']
print(f'{name} - 에러입니다')
파일 불러오기: from python_file.py import 함수(또는 *)
삼항연산자 : (참 값) if (조건) else (거짓 값)
*리스트 두 배 만들기 예제
a_list = [1, 3, 2, 5, 1, 2]
b_list = []
for a in a_list:
b_list.append(a*2)
print(b_list)
#더 효율적인 방법
a_list = [1, 3, 2, 5, 1, 2]
b_list = [a*2 for a in a_list] #[실행코드블럭 조건]
print(b_list)
map: 리스트의 모든 요소를 조작
def check_adult(person):
if person['age'] > 20 :
return '성인'
else:
return '청소년'
result = map(check_adult, people) #people의 모든 요소를 check_adult에 넣고 실행하라
print(list(result))
#삼항연산자
def check_adult(person):
return '성인' if person['age'] > 20 else '청소년'
result = map(check_adult, people)
print(list(result))
#람다식
result = map(lambda person : ('성인' if x['age'] > 20 else '청소년'), people)
filter: map에서 True값만 추출 -> 참,거짓일 때 return 값을 지정할 필요 없음)
result = filter(lambda person: person['age'] > 20, people)
print(list(result))
함수의 매개변수:
입력 값을 통해 함수에 값을 할당할 수 있다.
또한 어떤 매개변수에 어떤 값을 할당할 지 정한다면, 그 입력 값의 순서는 상관이 없다.
def cal(a, b):
return a + 2 * b
print(cal(3, 5))
print(cal(5, 3))
print(cal(a=3, b=5))
print(cal(b=5, a=3))
#디폴트 값을 지정할 수 있다.
def cal2(a, b=3):
return a + 2 * b
print(cal2(4))
print(cal2(4, 2))
print(cal2(a=6))
print(cal2(a=1, b=7))
#입력 값의 개수를 정하지 않고 모두 받기
def call_names(*args):
for name in args:
print(f'{name}야 밥먹어라~')
call_names('철수','영수','희재')
#다수의 key:value 입력값를 딕셔너리로 출력
def get_kwargs(**kwargs):
print(kwargs)
get_kwargs(name='bob')
get_kwargs(name='john', age='27')
클래스
객체 지향적이다 = 지방자치제 ~ 각 객체에 각 속성을 부여하고 컨트롤할 수 있는 함수를 붙여두고, 중앙처리장치에서는 해당 함수만 실행하는 것.
class Monster():
hp = 100
alive = True
def damage(self, attack):
self.hp = self.hp - attack
if self.hp < 0:
self.alive = False
def status_check(self):
if self.alive:
print('살아있다')
else:
print('죽었다')
m = Monster() #인스턴스
m.damage(120)
m2 = Monster()
m2.damage(90)
m.status_check()
m2.status_check()
2. 알고리즘 강의
점근 표기법:
빅오 표기법(BIG O), O(N)의 시간복잡도: 가장 오래걸릴 경우 ~ 일반적으로 사용된다
빅 오메가 표기법(BIG Omega), Ω(1)의 시간 복잡도: 가장 최선의 경우
1. 입력값에 비례해서 얼마나 늘어날지 파악해보자. 1 ? N ? N^2 ?
2. 공간복잡도 보다는 시간 복잡도를 더 줄이기 위해 고민하자.
3. 최악의 경우에 시간이 얼마나 소요될지(빅오 표기법)에 대해 고민하자
(펌: 강의자료)
1차 반복문 = O(N)
페이스북 기출문제:
곱하기 or 더하기
def find_max_plus_or_multiply(array):
multiply_sum = 0
for number in array:
if number <= 1 or multiply_sum <= 1:
multiply_sum += number
else:
multiply_sum *= number
return multiply_sum
result = find_max_plus_or_multiply
print("정답 = 728 현재 풀이 값 =", result([0,3,5,6,1,2,4]))
print("정답 = 8820 현재 풀이 값 =", result([3,2,1,5,9,7,4]))
print("정답 = 270 현재 풀이 값 =", result([1,1,1,3,3,2,5]))
문제 자체를 이해하기 힘들 때
1. 바로 코드를 작성하지 않고, 문제의 다른 예시를 떠올리며 패턴을 찾는다
2. 배웠던 자료구조(요리재료)를 어떻게 활용할지 고민한다
3. 문제의 특징을 글로 써본다(인지부조화를 줄이는 노력을 한다)
3. 알고리즘 특강: 강창민 튜터님
코딩테스트에 대한 정보:
제한시간이 짧기 때문에 생각과 코드는 짧을 수록 좋다.. 그래서 파이썬!
파이썬의 장점: List comprehension
자료구조는 재료, 알고리즘은 레시피.
강의의 최댓값 찾기 방식: 선형탐색 알고리즘
비트맵 자료구조:
문제해결에서 가장 중요한 것: 논리적으로 생각하고, 인지부조화가 일어나지 않도록 정리하기
4. JAVA 정석 + 기초
접근제어자의 종류
Public, Default, Protected, Private
Private 같은 클래스 내
Protected 같은 패키지 내 또는 다른 패키지의 자손 클래스에서
Default 같은 패키지 내
캡슐화
캡슐화와 접근제어자
다형성(이해에 있어 제일 관건)
자바 기초 강의 : 객체지향언어
Java 코드 컨벤션 : 동사로 시작하는 메소드/ 카멜 케이스
클래스와 인스턴스
메소드 : 만약 메소드가 없다면?
생성자 : 인스턴스 초기화 메서드, 대표적으로 인스턴스 변수를 초기화할때 사용된다.
'내일배움캠프 4기 스프링 > 내배캠 TIL📘' 카테고리의 다른 글
11. 11 CS 특강/ 알고리즘 강의 (0) | 2022.11.11 |
---|---|
11. 10 JAVA 기초 강의/ 알고리즘 강의/ 알고리즘 특강 (2) | 2022.11.10 |
11. 08 파이썬 기초 강좌/ JAVA 기초 강좌/ 알고리즘 강좌 + 코테 문풀 (0) | 2022.11.08 |
11. 07 DOM/ Json/ 알고리즘 강좌/JAVA 강좌 (0) | 2022.11.07 |
11. 04 미니 프로젝트 발표/ 다음 주 원격 강의를 위한 준비 (0) | 2022.11.05 |