life is egg

22.11.09 [파이썬기본문법 2 & 알고리즘] 본문

TIL

22.11.09 [파이썬기본문법 2 & 알고리즘]

삶은계란진재혁 2022. 11. 10. 07:12

강의 정리 내용..이다..

더보기

함수

 

같은 동작을 하게 만드는것..!

 

 

퀴즈

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
Comments