티스토리 뷰
[Day 05] 파이썬으로 데이터 다루기
1. 강의 복습 내용
Exception
- 프로그램을 사용할 때 일어나는 흔한 일들
- 프로그램 사용할 때 일어나는 오류들
1. 주소를 입력하지 않고 배송 요청
2. 저장도 안 했는데 컴퓨터 전원이 나감
3. 게임 아이템 샀는데 게임에서 튕김
-> 예상치 못한 많은 일(예외) 들이 생김
1. 예상 가능한 예외
- 발생 여부를 사전에 인지할 수 있는 예외
- 사용자의 잘못된 입력, 파일 호출 시 파일 없음
- 개발자가 반드시 명시적으로 정의 해야함
2. 예상 불가능한 예외
- 인터프리터 과정에서 발생하는 예외
- 리스트의 범위를 넘어가는 값 호출 혹은 정수 0으로 나눌 때
- 수행 불가시 인터프리터가 자동 호출
* 예외가 발생할 경우 후속 조치 등 대처가 필요
1) 없는 파일 호출 -> 파일 없음을 알림
2) 게임 이상 종료 -> 게임 정보 저장
프로그램 = 제품, 모든 잘못된 상황에 대처가 필요하다.
=> ( Exception Handling) 또는 (If 문을 사용해서 처리하는 방법도 있음) : 파이썬에선 전자를 사용 권유
try :
예외 발생 가능 코드
except <Exception Type>:
예외 발생시 대응하는 코드
- 0으로 숫자를 나눌 때 예외처리 하기
for i in range(10) :
try :
print(10/i)
except ZeroDivisionError :
print("Not divided by 0")
* 에러가 발생하면 반복문을 종료시키는 것이 아니라 continue의 효과를 가지고 있음 -> 오류나는 부분만 넘어감
* except 를 여러개 달아줄 수 있다.
1. IndexError : List의 인덱스 범위 넘어갈 때
2. NameError : 존재하지 않는 변수 호출
3. ZeroDivisionError : 0으로 숫자 나눌 때
4. ValueError : 변환할 수 없는 문자/숫자를 변환
5. FileNotFoundError : 존재하지 않는 파일을 호출
except Exception : 같이 전체를 exception으로 잡는 것은 좋은 코드가 아니다. -> 다른 사용자가 알기 명확하지 않음
+) try ~ except ~ finally (오류 여부와 상관없이 항상 실행시켜줌)
+) try ~ except ~ else
* if문은 로직적인 문제를 다룰 때 사용
* except은 잘못된 데이터를 잡아줄 때 주로 사용
* 팀의 규칙을 따르자
* raise 구문
- 필요에 따라 강제로 Exception을 발생
* assert 구문
- 특정 조건에 만족하지 않을 경우 예외 발생
과제 할때 수 없이 많이 직면한 구문이라 익숙했다.
File Handling
파일의 종류
- 기본적인 파일 종류로 text 파일과 binary 파일로 나눔
- 컴퓨터는 text 파일을 처리하기 위해 binary 파일로 변환시킴 (예: pyc 파일)
- 모든 text 파일도 실제는 binary 파일
- ASCII / Unicode 문자열 집합으로 저장되어 사람이 읽을 수 있음
Binary 파일 | Text 파일 |
- 컴퓨터만 이해할 수 있는 형태인 이진 형식으로 저장된 파일 - 일반적으로 메모장으로 열면 내용이 깨져 보임 (메모장 해설 불가) - 엑셀, 워드파일 등등 |
- 인간도 이해할 수 있는 형태인 문자열 형식으로 저장된 파일 - 메모장으로 열면 내용 확인 가능 - 메모장에 저장된 파일, HTML 파일, 파이썬 코드 파일 등 |
Python File I/O
- 파이썬은 파일 처리를 위해 "open" 키워드를 사용함
f = open("<파일이름>", "접근 모드")
f.close()
파일열기모드 | 설명 |
r | 읽기모드 - 파일을 읽기만 할 때 사용 |
w | 쓰기모드 - 파일에 내용을 쓸 때 사용 |
a | 추가모드 - 파일의 마지막에 새로운 내용을 추가 시킬 때 사용 |
- read() txt 파일 안에 있는 내용을 문자열로 반환
f = open("i_have_a_dream.txt","r") # 대상파일이 같은 폴더에 있을 경우
contents=f.read()
print(contents)
f.close()
- with 구문과 함께 사용하기
with open("i_have_a_dream.txt","r") as my_file :
contents = my_file.read()
print(type(contents), contents)
- 한 줄씩 읽어 List Type으로 반환하기
with open("i_have_a_dream.txt","r") as my_file :
contents_list=my_file.readllines() # 파일 전체를 list로 변환
print(type(contents_list)) # type : list
print(contents_list)
- 실행 시 마다 한 줄 씩 읽어 오기
with open("i_have_a_dream.txt", "r") as my_file :
i=0
while True :
line = my_file.readline()
if not line:
break
print(str(i)+"==="+line.replace("\n","")) # 한줄씩 출력
i=i+1
* readline() 과 readlines()의 차이
- readlines()는 시작하자마자 모든 입력데이터를 메모리에 올린다 (시간 이점)
- readline()은 한 줄씩 읽을 때 마다 메모리에 올린다 (메모리 이점)
Ex) 단어 통계 정보 산출
with open("i_have_a_dream.txt", "r") as my_file:
contents=my_file.read()
word_list=contents.split(" ")
#빈칸 기준으로 단어를 분리 리스트
line_list=contents.split("\n")
#한줄 씩 분리하여 리스트
print("Total Number of Characters :",len(contents))
print("Total Number of Words :",len(word_list))
print("Total Number of Lines :",len(line_list))
- mode는 "w", encoding="utf8"
f = open("count_log.txt", 'w', encoding="utf8")
for i in range(1,11) :
data="%d번째 줄입니다.\n" % i
f.write(data)
f.close()
* mode='a' 는 추가 모드
- os 모듈을 사용하여 Directory 다루기
import os
os.mkdir("log") # 현재 디렉토리에 log 디렉토리 생성
try :
os.mkdir("abc")
except FileExisitsError as e: # 1
print("Already created")
os.path.exisits("abc") # 1과 같은 구문
import shutil
dest = os.path.join("abc","kims.txt")
# abc\kims.txt
* 최근에는 pathlib 모듈을 사용하여 path를 객체로 다룸
import pathlib
cwd=pathlib.Path.cwd() # 현재 디렉토리
cwd_parent=cwd.parent # 부모 디렉토리
list(cwd.glob("*")) # generator 로 생성되므로 list로 받아줌
Log 파일 생성하기
1) 디렉토리가 있는지
2) 파일이 있는지 확인 후
import os
if not os.path.isdir("log"):
os.mkdir("log")
if not os.path.exists("log/count_log.txt"):
f=open("log/count_log.txt",'w',encoding="utf8")
f.wirte("기록\n")
f.close()
Pickle
- 파이썬의 객체를 영속화(persistence)하는 built-in 객체
- 데이터, object 등 실행중 정보를 저장 -> 불러와서 사용
- 저장해야하는 정보, 계산 결과(모델) 등 활용이 많음
- 객체는 인터프리터가 종료되면 날아가므로 그것을 종료후에도 저장하다가 다음 실행에도 이어서 쓰고 싶을 때
import pickle
f=open("list.pickle","wb")
test=[1,2,3,4,5]
pickle.dump(test,f) # test를 f의 파일에 저장
f.close()
- pickle은 binary 파일이여서 메모장에서 확인 불가, 코드 내에서 "rb" 모드로 불러올 수 있다.
import pickle
f=open("list.pickle","rb")
test_pickle=pickle.load(f)
print(test_pickle) # 영속화 확인
Logging Handling
1. Logging
- 프로그램이 실행되는 동안 일어나는 정보를 기록을 남기기
- 유저의 접근, 프로그램의 Exception, 특정 함수의 사용
- Console 화면에 출력, 파일에 남기기, DB에 남기기 등등 남기는 방법
- 기록된 로그를 분석하여 의미있는 결과를 도출 할 수 있음
- 실행시점에서 남겨야 하는 기록, 개발시점에서 남겨야하는 기록
* print vs logging
- 기록을 print로 남기는 것도 가능
- 하지만 Console 창에만 남기는 기록은 분석시 사용 불가
- 때로는 레벨별(개발, 운영)로 기록을 남길 필요도 있음
- 모듈별로 별도의 logging을 남길 필요도 있음
- 이러한 기능을 체계적으로 지원하는 모듈이 필요 -> logging
Logging 모듈
- 파이썬의 기본 Log 관리 모듈
import logging
logging.debug("wrong")
logging.info("확인")
logging.warning("조심")
logging.error("Error")
logging.ciritical("치명적..")
Logging level
- 프로그램 진행 상황에 따라 다른 Level의 Log를 출력
- 개발 시점, 운영 시점 마다 다른 Log가 남을 수 있도록 지원
- Debug -> Info -> Warning -> Error -> Critical
- Log 관리시 가장 기본이 되는 설정 정보
Level | 개요 | 예시 |
debug | 개발시 처리 기록을 남겨야하는 로그 정보를 남김 | - 다음 함수로 A를 호출 - 변수 A를 무엇으로 변경함 |
info | 처리가 진행되는 동안의 정보를 알림 | - 서버가 시작되었음 - 서버가 종료됨 - 사용자 A가 프로그램에 접속함 |
warning | 사용자가 잘못 입력한 정보나 처리는 가능하나 원래 개발시 의도치 않는 정보가 들어왔을 때 알림 | - Str 입력을 기대했으나, int가 입력 -> Str Casting으로 처리함 - 함수에 argument로 이차원 리스트를 기대했으나 -> 일차원 리스트가 들어옴, 이차원으로 변환 후 처리 |
error | 잘못된 처리로 인해 에러가 났으나, 프로그램은 동작할 수 있음을 알림 | - 파일에 기록을 해야하는데, 파일이 없음 -> Exception 처리 후 사용자에게 알림 - 외부 서비스와 연결 불가 |
critical | 잘못된 처리로 데이터 손실이나 더이상 프로그램이 동작할 수 없음을 알림 | - 잘못된 접근으로 해당 파일이 삭제됨 - 사용자의 의한 강제 종료 |
* 로깅 레벨 설정에 따라 출력되는 기준이 바뀜
logging.basicConfig(level=logging.DEBUG) # 로깅 레벨 설정
* 파일에 출력하기
steam_handler = logging.FileHandler("my.log",mode="w",encoding="utf8")
logger.addHandler(steam_handler)
* 사전에 세팅이 많이 필요한데 이를 도와주는 방법
1) configparser -> 파일에 설정
- 프로그램의 실행 설정을 file에 저장
- Sectiond, Key, Value 값의 형태로 설정된 설정 파일을 사용
- 설정 파일을 Dict Type으로 호출후 사용

2) argparser
- 콘솔 창에서 프로그램 실행시 Setting 정보를 저장함
- 거의 모든 Console 기반 Python 프로그램 기본으로 제공
- 특수 모듈도 많이 존재하지만(TF), 일반적으로 argparse를 사용
- Command-Line Option 이라고 부름
ex) ls --help

# Help 설명 => --help
Logging 적용하기
- Log의 결과값의 format을 지정해줄 수 있음
formatter = logging.Formatter('%(asctime)s %(levelname)s %(process)d %(message)s')

logging.config.fileConfig('logging.conf')
logger=logging.getLogger()

Python Data handling
1. Comma Separate Value (CSV) ***
- CSV, 필드를 쉼표(,)로 구분한 텍스트 파일
- 엑셀 양식의 데이터를 프로그램에 상관없이 쓰기 위한 데이터 형식이라고 생각하면 쉬움
- 탭(TSV), 빈칸(SSV) 등으로 구분해서 만들기도 함
- 통칭하여 character-separated values (CSV) 부름
- 엑셀에서는 "다른 이름 저장" 기능으로 사용가능
* 파이썬으로 CSV 파일 읽기/쓰기
- Text파일 형태로 데이터 처리 예제
- 일반적 textfile을 처리하듯 파일을 읽어온 후, 한 줄 한 줄씩 데이터를 처리함
* CSV 객체로 CSV 처리
- Text 파일 형태로 데이터 처리시 문장 내에 들어가 있는 "," 등에 대해 전처리 과정 필요
- 파이썬에서는 간단히 CSV 파일을 처리하기 위해 CSV객체를 제공함
- 한글로 되어 있으면 한글 처리가 필요 (cp949로 읽고 utf8로 출력)
* CSV 객체 활용
import CSV
reader = csv.reader f, delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL)
Attribute | Default | Meaning |
delimiter | , | 글자를 나누는 기준 |
lineterminator | \r\n | 줄 바꿈 기준 |
quotechar | " | 문자열을 둘러싸는 신호 문자 |
quoting | QUOTE_MINIMAL | 데이터 나누는 기준이 quotechar에 의해 둘러싸인 레벨 |
WEB
- World Wide Web을 줄여서 Web
- 데이터 송수신을 위한 HTTP 프로토콜 사용, 데이터를 표시하기 위해 HTML 형식을 사용
1) 요청 : 웹주소, Form, Header 등
2) 처리 : Database 처리 등 요청 대응
3) 응답 : HTML, XML 등으로 결과 반환
4) 렌더링 : HTML, XML 표시
1. HTML
- 웹 상의 정보를 구조적으로 표현하기 위한 언어
- 제목, 단락, 링크 등 요소 표시를 위해 Tag를 사용
- 모든 요소들은 꺾쇠 괄호 안에 둘러 쌓여 있음
- 모든 HTML은 트리 모양의 포함 관계를 가짐
- 일반적으로 웹 페이지의 HTML 소스파일은 컴퓨터가 다운로드 받은 후 웹 브라우저가 해석/표시
* Why 웹을 알아야 하는가?
- 정보의 보고, 많은 데이터들이 웹을 통해 공유
- HTML도 일종의 프로그램, 페이지 생성 규칙이 있음 : 규칙을 분석하여 데이터의 추출이 가능
- 추출된 데이터를 바탕으로 하여 다양한 분석이 가능
2. 정규식 (Regular expression)
- 정규 표현식, regexp 또는 regex 등으로 불림
- 복잡한 문자열 패턴을 정의하는 문자 표현 공식
- 특정한 규칙을 가진 문자열의 집합을 추출
* 정규식 for HTML Parsing
- 주민등록번호, 전화번호, 도서 ISBN 등 형식이 있는 문자열을 원본 문자열로 부터 추출함
- HTML 역시 TAG를 사용한 일정한 형식이 존재하기 때문에 정규식으로 추출 용이
reference : http://www.nextree.co.kr/p4327
- 문법 자체는 매우 방대, 스스로 찾아서 하는 공부 필요
1) 정규식 연습장(http://www.regexr.com/) 으로 이동
2) 테스트하고 싶은 문서를 Text란에 삽입
3) 정규식을 사용해서 찾아보기
* 정규식 기본 문법 #1
- 문자 클래스 [ ] : [ 와 ] 사이의 문자들과 매치라는 의미
ex) [abc] <- 해당글자가 a,b,c중 하나가 있다.
"a", "before","deep","dud","sunset"
- "-"를 사용 범위를 지정할 수 있음
ex) [a-zA-z] - 알파벳 전체, [0-9] - 숫자 전체
* 정규식 기본 문법 - 메타 문자
- 정규식 표현을 위해 원래 의미 X, 다른 용도로 사용되는 문자
. ^ $ * + ? { } [ ] \ : ( )
EX) {m.n} - 반복 횟수를 지정
? - 반복 횟수가 1회
| -> or
^ -> not
* 정규식 in 파이썬
- re 모듈을 import 하여 사용
- 함수: search - 한 개만 찾기, findall - 전체 찾기
- 추출된 패턴은 tuple로 반환됨
import re
import urllib.request
url="https://bit.ly/3rxQFS4"
html=urllib.request.urlopen(url)
html_contents=str(html.read())
id_results=re.findall(r"([A-Za-z0-9]+\*\*\*)", html_contents)
# findall 전체찾기, 패턴대로 데이터 찾기
for result in id_result:
print(result)
import urllib.request
import re
url="http://www.google.com/googlebooks/uspto-patents-grants-text.html"
html = urllib.request.urlopen(url)
html_contents=str(html.read().decode("utf8"))
url_list=re.findall(r"(http)(.+)(zip)",html_contents)
for url in url_list :
print("".join(url)) # Tuple -> str
3. XML (eXtensible Markup Language)
- 데이터의 구조와 의미를 설명하는 TAG(MarkUp)를 사용하여 표시하는 언어
- TAG와 TAG사이에 값이 표시되고, 구조적인 정보를 표현할 수 있음
- HTML과 문법이 비슷, 대표적인 데이터 저장 방식
- 정보의 구조에 대한 정보인 스키마와 DTD 등으로 정보에 대한 정보(메타정보)가 표현되며, 용도에 따라 다양한 형태로 변경가능
- XML은 컴퓨터(예: PC<->스마트폰) 간에 정보를 주고받기 매우 유용한 저장 방식으로 쓰이고 있음
- XML도 HTML와 같이 구조적 markup 언어
- 정규표현식으로 Parsing이 가능함
- 그러나 좀 더 손쉬운 도구들이 개발되어 있음
- 가장 많이 쓰이는 parser인 beautifulsoup으로 파싱
* beautifulsoup
- HTML, XML등 Markup 언어 Scraping을 위한 대표적인 도구
- lxml 과 html5lib과 같은 Parser를 사용함
- 속도는 상대적으로 느리나 간편히 사용할 수 있음
4. JavaScript Object Notation (JSON)
- 원래 웹 언어인 Java Script의 데이터 객체 표현 방식
- 간결성으로 기계/인간이 모두 이해하기 편함
- 데이터 용량이 적고, Code로의 전환이 쉬움
- 이로 인해 XML의 대체제로 많이 활용되고 있음
- Python의 Dict type과 같다.
* JSON in Python
- JSON 모듈을 사용하여 손 쉽게 파싱 및 저장 가능
- 데이터 저장 및 읽기는 dict type과 상호 호환 가능
- 웹에서 제공하는 API는 대부분 정보 교환 시 JSON 활용
- 페이스북, 트위터, Github 등 거의 모든 사이트
- 각 사이트 마다 Developer API의 활용법을 찾아 사용
* JSON Read
- JSON 파일의 구조를 확인 -> 읽어온 후 -> Dict Type처럼 처리
import json
with open("json_example.json", "r", encoding="utf8") as f:
contents = f.read() # str
json_data=json_loads(contents) # dict
print(json_data["employees"])
- JSON은 빠르고 효율적이고 편리하지만, 데이터를 사용자가 직접 검증해야 하고 때문에 XML이 스키마를 사용해서 데이터를 검증할 수 있어서 XML이 사용되는 이유라고 한다.
-> 왜? -> JSON은 스스로 데이터 타입을 정할 수 없기 때문.
http://www.tcpschool.com/json/json_intro_xml
2. 피어세션
1. 마스터클래스를 듣고 토의
강연을 해주시는 분들도 다 의견이 달랐던 '석사' 학위에 대한 얘기.
마스터 클래스가 끝난 후에도 피어세션에서도 이 내용에 대해 토의를 했었다.
2. 강의 내용에 대한 리뷰
나의 경우엔 전 날 피어세션 자체 스터디에서 문제를 풀면서 도움이 되었던 부분이 있었다.
https://www.acmicpc.net/problem/6581
이 문제를 풀면서 입력을 받기 위해 try except 문부터 더 나아가 File I/O / File Handling에 대해서도 더 깊게 공부했었던 것 같았다.
그리고 XML과 JSON의 차이점에 대해서 논의를 해보았고 다같이 조사해보았는데 JSON이 대체적으로 더 좋은 방향으로 나오는 정보가 많았다. XML과 JSON에 대해 좀 더 명확하게 사용되는 목적과 사용함으로써 얻는 이점 등 집단 지식으로 한번 더 학습 할 수 있었던 기회였다.
정규식 관련은, 강의에서도 교수님께서 친절히 연습할 수 있는 사이트를 안내해주셔서 그곳에서 실습해보며 연습하는 방법이 가장 좋을 것 같다는 의견이 많았다. 나 역시도 이에 깊게 공감한다.
Configparser에 대한 질문도 많이 나왔는데, 실제로 큰 프로젝트나 라이브러리들도 보면 설정에 대한 세팅값 파일은 항상 존재했다.
Dict는 JSON을 비롯해 세팅부분에서 사용되는 자료구조로도 쓰이고, 파이썬에서 많이 쓰이는 자료구조인 것 같다. 여담으로 그동안 피어세션 자체 문제 풀기로 Dict를 사용하는 문제를 많이 풀었는데, 언제나 Dict는 편리하고 강한 자료구조인 것 같다.
3. 피어세션 자체 문제 풀이 진행
다음주 부터는 이부분에 너무 많은 시간을 쓰지 않을 계획. (필요한 사람만 푸는 정도?)
왜냐하면 이번주로 파이썬 기본 문법 강의도 끝났고 이제는 충분히 익숙해져서 자유자재로 파이썬 코딩이 가능한 정도로 역량을 올리자 취지에서 진행했던것이였기 때문.
다음주부터는 많아야 2문제정도 풀면서 새로운 커리큘럼에 집중하고 거기에 맞는 피어세션 플랜을 진행하기로 협의했다.
그리고 Kaggle에는 머신러닝, AI 관련해서 경쟁할 수 있는 시스템도 있다고 하니 평소 우리가 BOJ문제를 푼 것 처럼 나중에는 Kaggle에서 다같이 해보는 것도 좋을 것 같다.
https://github.com/hunmin-hub/Python-Study/tree/main/0122
금,토,일 3일 동안 1주일동안 배운 내용을 총집합해서 풀만한 문제들로 발췌하였다.
난이도는 살짝 올려서 3일동안 4문제.
간단히 다같이 문제에 사용될 자료구조들을 생각해보았고, 각자 머릿속으로 구현한 로직들을 토의해보았다.
4. 1주차를 마치며 멤버들과 여담
1주일동안 다같이 고생한 피어세션 멤버들과 앞으로도 더 열심히 하자고 다같이 의욕을 끌어올렸다.
그리고 학습정리에 대해 각자 정리 방식에 대해 좋은 점이 있으면 서로 공유했고 플랫폼에 대해서도 논의했는데
아무래도 노션이 최고인것 같다.
학습정리는 아무래도 최우선적으로 우리가 배운 내용을 정리하고 알게된 내용을 쉽게 볼 수 있게 정리하여 효율적으로 학습하는 것이 목적이니, 평가 항목이 아니니 최대한 자신에게 득이 될 수 있도록 정리하는게 베스트인 것 같다.
3. Conclusion
오늘은 첫 마스터클래스를 가졌다.
강연해주신 분은 우리의 첫 1주 강의를 맡아 열심히 파이썬 기본문법에 대해 설명해주신 교수님이였고, 현직 교수님의 입장에서 알려주시는 AI 업계, 기술 동향, 트랜드들을 말씀해주신게 많이 유익했다.
나 역시도 강연을 들으면서 막연했던 AI 분야에 대해 자세한 기술 별, 데이터 별로 나눠주신 덕분에 방향성을 한번 더 잡아볼 수 있었던 기회였고, 동기부여도 생겼다.
그리고 오늘은 1주차를 마무리하는 날이자 파이썬 기본 문법 강의가 끝난 날이기도 하다. 어느정도 피어세션과 강의 그리고 학습정리와 개별 실습 등 학습을 통해서 빠르게 파이썬에 익숙해진 느낌이기도 한데, 방심하지않고 꾸준히 이 감각을 유지해야 나중에 더 어려운 AI , Data 모듈을 다뤄도 기본적인 '구현'에서 뒤쳐지지는 말아야겠다.
피어세션 멤버들과 1주차를 끝내면서 가장 힘들었던 날, 이런 저런 얘기를 하며 공감도 하고 의지도 되는 것 같아서 점점 더 끈끈해지는 것 같고 다들 모르는 부분이 있으면 서로 배우고 채워주는 모습에 멤버들에게 감사하다는 생각도 든다. 나도 열심히해서 멤버들에게 도움이 될 수 있었으면 좋겠다. 그렇기 위해서는 물론 AI 노베이스로 시작하지만 나만의 강점을 활용해서 어떻게든 기여해야 겠다는 생각이 들었다.
'부스트캠프 AI Tech > 학습정리' 카테고리의 다른 글
[Day 07] 경사하강법 (0) | 2021.01.26 |
---|---|
[Day 06] Numpy / 벡터 / 행렬 (0) | 2021.01.25 |
[Day 04] 파이썬 기초 문법 3 (0) | 2021.01.21 |
[Day 03] 파이썬 기초 문법 2 (0) | 2021.01.20 |
[Day 02] 파이썬 기초문법 (0) | 2021.01.19 |
- Total
- Today
- Yesterday
- 브루트포스
- Data Handling
- python
- Vision AI 경진대회
- 프로그래머스
- dfs
- P-Stage
- DACON
- 데이터연습
- 네트워킹데이
- AI 프로젝트
- 공공데이터
- cnn
- C++
- 알고리즘
- 동적계획법
- 데이터핸들링
- Unet 구현
- NLP 구현
- 코딩테스트
- 백준
- pandas
- 백트래킹
- DeepLearning
- ResNet
- 다이나믹프로그래밍
- 이분탐색
- 그리디
- Unet
- 부스트캠프 AI Tech
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |