life is egg
22.11.09 [파이썬기본문법 2 & 알고리즘] 본문
강의 정리 내용..이다..
함수
같은 동작을 하게 만드는것..!
퀴즈
def check_gender(pin):
check = pin.split('-')[1][:1]
if int(check)%2 == 0:
print('여성입니다')
else:
print('남성입니다')
알고 있으면 좋은 개념들..
튜플,집합
튜플은 리스트와 유사하지만 불변형
>[] 대신 ()사용한다
>언제 사용하니 ? ...리스트 + 튜플 리스트+딕셔너리와 유사한 효과
집합
set......
집합..기본
a = [1,2,3,4,5,3,4,2,1,2,4,2,3,1,4,1,5,1]
a_set = set(a)
print(a_set)
교집합 합집합 차집합을 구할 수 있습니다..
a = ['사과','감','수박','참외','딸기']
b = ['사과','멜론','청포도','토마토','참외']
a_set = set(a)
b_set = set(b)
print(a_set & b_set) # 교집합
print(a_set | b_set) # 합집합
print(a_set - b_set) # 차집합
f-string
변수를...더 직관적인 문자열로 만들기
scores = [
{'name':'영수','score':70},
{'name':'영희','score':65},
{'name':'기찬','score':75},
{'name':'희수','score':23},
{'name':'서경','score':99},
{'name':'미주','score':100},
{'name':'병태','score':32}
]
for s in scores:
name = s['name']
score = str(s['score']) #문자열로 바꿔주기..
print(name+'는 '+score+'점 입니다')
#위엣거를... 아래와 같이 하면 더 직관적
for s in scores:
name = s['name']
score = str(s['score'])
print(f'{name}은 {score}점입니다')
예외처리
에러가 있어도 건너뛰게 할 수 있는 방법
try : 실행할 문장..
except: 예외일 경우 실행할 문장
..남용 x... 왠만하면 안쓰는게 좋은것..!
파일불러오기
from 파일명 improt 함수명 or * // *은 모든 함수를 다가져올꺼야
한줄...로 줄여쓰기
if문 줄여쓰기
num = 3
result = ("짝수" if num%2 == 0 else "홀수") # 괄호가 없어도 된다
#(참일 때 값) if (조건) else (거짓일 때 값)으로 항이 3개라 삼항 연산자입니다
print(f"{num}은 {result}입니다.")
for문줄여쓰기
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]
# a_list의 값을 a라는 변수로 꺼내서 a*2를 한것을 b_list로 만들어 줘라
print(b_list)
※심화 내용임..!
map.filter,lamda...
리스트의 원소를 조작하는것..!
#1차조작
def check_adult(person):
if person['age'] > 20:
return '성인'
else:
return '청소년'
result = map(check_adult, people)
print(list(result))
#2차조작
def check_adult(person):
return '성인' if person['age'] > 20 else '청소년'
result = map(check_adult, people)
print(list(result))
#3차조작
result = map(lambda x: ('성인' if x['age'] > 20 else '청소년'), people)
print(list(result))
#훨씬 간결해졌다 ... 거꾸로 읽어야 편하다
# people이라는 리스트가 있는데 ~ 성인은 20살이상이고 아니라면 청소년이야
#이걸 람다값 x라고 부를껀데 이걸로 리스트 하나 만들꺼야
필터
리스트의 원소중 특별한값 뽑기
result = filter(lambda x: x['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):
#이렇게 여러 개의 인수를 하나의 매개변수로 받을 때 관례적으로 args라는 이름을 사용합니다.
#arguments라는 뜻이에요!
for name in args:
print(f'{name}야 밥먹어라~')
call_names('철수','영수','희재')
#키워드 인수를 여러 개 받는 방법! 약간...오버로딩개념인듯
def get_kwargs(**kwargs):
print(kwargs)
get_kwargs(name='bob')
get_kwargs(name='john', age='27')
클래스
언제 사용하냐..?
>객체지향을 목표를 할때..
>>객체지향을한다는것...중앙통제가아닌.. 물건..물체에다가 각각 특성을 넣는것..
클래스와 인스턴스.. 약간 자바랑 비슷한 개념맞는듯..!
알고리즘 기초
알고리즘이란..?
>어떤 문제가 있을때, 그것을 해결하기 위한 여러 동작들의 모임..!
왜공부해야해?
>좋은 개발자가 되기 위해..
>좋은 회사 취직
>>취업하고나서는... 회사에 있는 이미 만들어진 좋은 알고리즘을 쓰게될것...
개관
1주차.시간/공간 복잡도, 알고리즘 구현력 기르기
2주차.어레이,링크드리스트,이분탐색,재귀
3주차.정렬,스택,큐,해쉬
4주차.힙,BFS,DFS,Dynamic Programming
5주차.종합 알고리즘 문제풀이
알고리즘 1
최대값 찾기
+ ,, for - else 문 ... for문을 다 돌았을때까지 break가 작동안하면 else 를 실행
알고리즘 2
최빈값 찾기
문자인지 확인하는 내장함수
print("a".isalpha()) # True
print("1".isalpha()) # False
s = "abcdefg"
print(s[0].isalpha()) # True
아스키코드 확인하기..
# 내장 함수 ord() 이용해서 아스키 값 받기
print(ord('a')) # 97
print(ord('a') - ord('a')) # 97-97 -> 0
print(ord('b') - ord('a')) # 98-97 -> 1
11.09일 강철민 튜터님 알고리즘 강의 <업데이트 예정..~.~>
녹화본 주니까 복습해주면서 ...연습..
해설강의는 파이선 + 주특기언어...(자바) 제공..
선발대 후발대..?
> 성취도 평가후에... 진행할것... 주특기 기초를 배우고 나서
>>아침퀴즈 타임어택 프로젝트 다면평가...
>>>반은 본인이..선택하게끔 기회를 주겟다..
>후발대반은 주특기 보충강의..실시간으로 진행됨..
>선발대반은 심화학습 갈꺼야.. 심화주제를 가지고 과제 + 가이드... or 대기업코테 대비
>> 전기수는 코태 대비 니즈가 컸음...
강철민님은 회사의 CTO야... 이런저런 프로젝트 ...
러닝커브가 있는거 알고 있다.. 알고리즘은..
그래서 ..초반에 쉽게 접근 해보고 싶다...
코딩 테스트 ...도전할 수 있는 용기가 필요함
..왜 그런가에 대한 궁금증을 가지면 좋다...
왜?파이썬으로 대비...
>자스/C++/파이썬 가장 많이 씀... 자바 안쓴다 이거야!
>input - output... 이 여러개 있는데 이걸 맞춰야해
>코드 실행시간 익스큐전 타임...제약이존재..
>>파이썬으로 했을때... 불이익이 없기 때문에..
>파이썬 학습난이도가 낮다
>중요..! 코드가 짧게 나온다..
>>시간싸움에 유리하다...생각보다 제한시간이 빡세다..숏코딩이 좋다
? SIG? 가멀까..? 스페셜 인털리스 머시기 그룹..?
진행방식은.... 강의 보면서 같이 코멘트..해줄꺼
프로그램의 본질은 .. 어떤... 인풋값이 있고
인풋을 가공해서 ... 원하는 값으로 나오는것..
그과정에 있어서 ... 자료구조(재료) + 알고리즘(조리법)이...필수적이다..
자기객관화가 중요하다..
>부족하다 ..싶으면... 테스트를 해봅시다..
코딩 문제 풀때...
>한글로 한번 어떻게 될지... 포현해보기
러닝커브가..도도체 멀까..?
최댓값찾기
1.이중for문사용했다
>> 이유는 대조군 하나놓고 나머지 꺼내서 비교하기 위해
파이썬이 좋은이유.. list comprehention..? 구글링 해보기...
파이썬은 들여쓰기.... 에 민감하니까 잘 지켜주자..
파이썬.. for - else 구문이 따로 있다..
2.변수값 지정... 하나씩 비교해서 큰값을 변수에 집어넣는다
최빈값찾기
라이브러리 소개,,, .isalpa..?
but.. 코테에서는 라이브러리... 제한한다... 써도되는거.. 알려줄꺼야..
라이브러리보다는 기본기...를... 닦아...
비트맵자료구조.. >내 특정 인덱스에 대한 카운트수를 얻기 위해..
string... 이거 리스트 취급인가봐 ~~ 약간.. 자바에서 배운 스트링 클래스 ..그런 개념인가봐..
input = "hello my name isssssssssss sparta"
def find_max_occurred_alphabet(string):
alphabet_occurrence_array = [0] * 26
for a in string:
if not a.isalpha():
continue
alphabet_occurrence_array[ord(a) - ord('a')] += 1
max_value = 0
count_value = 0
for b in alphabet_occurrence_array:
if max_value < b:
max_value = b
for c in alphabet_occurrence_array:
if max_value != c:
count_value += 1
else:
break
return chr(count_value + ord('a'))
result = find_max_occurred_alphabet(input)
print(result)
리소스가 허용하는한...
공간봅작도보다는 시간복잡도가 중요하다
2주차..
배열과 링크드인...
자료구조 선택해야할시 알아야할것 : 삽입시간. 삭제시간. 검색시간.정렬여부
졸았다.1

알고리즘 공부한걸 깃허브 저장소에 올라가도록 드디어 설정했다
어차피 나혼자 하는거니까 메인에다가 커밋하고 푸쉬하고 하는중,,~.~
'TIL' 카테고리의 다른 글
| 22.11.11 [CS_CPU & 알고리즘] (0) | 2022.11.11 |
|---|---|
| 22.11.10 [자료구조.. & python] (0) | 2022.11.10 |
| 22.11.08 [파이썬 기본 문법] (0) | 2022.11.08 |
| 22.11.07 [Java & intellij] (2) | 2022.11.08 |
| 22.11.04 [프로젝트 발표] (0) | 2022.11.04 |