본문 바로가기

전체 글

[부스트캠프 AI Tech] day3 Review Pythonic Code 다른사람의 코드를 참고하거나 일관성 있는 코드작성, 효율성 등의 이유로 pythonic한 코드를 작성하여야 한다(거의 표준). 아래와 같은 방법으로 pythonic한 code를 만들 수 있다. split & join 리스트가 주어져 있을때 '기준'.join(list)와 같은식으로 각각의 원소들을 기준으로 합칠 스 있고, str을 str.split(기준) 과 같이 자를 수 있다. List Comprehension import pprint case1=['A','B','C'] case_2=['1','2','3'] a=[i+j for i in case1 for j in cas.. 더보기
[부스트캠프 AI Tech] day2 Review Python에서 새로 안 내용 print(f"{}")과 같은 형태로 출력을 해주는 fString문법 리스트를 복사할때 ex)arr1=[1,2,3,4] , arr2=arr1 과 같은 과정을 진행하게 되면, arr1,arr2 이 두변수 중 어느것 하나만 리스트의 값을 바꿔도 참조하는 메모리가 같기때문에 둘 다 값이 바뀐다.(같은 값) arr1=arr2[:]와 같은 방법으로 복사 할 수 있고, 2차원 이상의 리스트는 copy library의 deepcopy를 사용하여 복사해준다. function type hints라는 것은 처음보는 사용자나 협업시에 조금더 한눈에 파라미터의 타입과 리턴타입을 파악하기위해(파이썬은 동적으로 변수의 타입이 정해지므로, 조금 더 한눈에 알아보기쉽게 바꿔준다.)사용한다... 더보기
[부스트캠프 AI Tech] day1 강의내용 복습 파일시스템이란? 파일시스템이란 파일을 저장하는 트리구조의 저장체계이다. 일반적으로 폴더와 디렉토리는 같은말이고 이 폴더(=디렉토리) 안에 파일이 저장되는 구조이다. Shell & Kernel & Terminal 이란 ?? 커널은 하드웨어를 통제하는 핵심 코어(OS)라고 할 수있고, 쉘은 이러한 커널을 통제하는 명령어 체계를 말한다.(맥에서 bash, zsh 등) 터미널은 명령어들의 입출력 값을 받는곳을 의미한다. Python이란? 운영체제에 상관없이 돌아가는 프로그램 인터프리터언어로, 소스코드를 실행 시점에 해석하여 작성이 간단하고 메모리를 적게잡아먹는 이점이 있지만 실행속도가 느리다.(최근에는 많이 개선되었다.) 실행순서가 아닌 단위모듈 중심으로 프로그램이 작성되어진다. 실행시점에 데이터.. 더보기
[Node js](express) 회원가입&로그인 구현 node js의 express js를 활용하여 회원가입과 로그인을 구현해 보았다. 간략하게 설명하자면, 1.먼저 루트로 접속을하면 환영인사와 함께 로그인과 회원가입 버튼을 표시한다. 2.회원가입을 누르면 회원가입을 할 수 있는 form과, 제출버튼이 포함된 페이지가 표시되고(메인으로 이동하는 버튼도 함께), name,password를 받아 회원가입을 처리하게 되는데, mysql에 동일한 name이 존재하면 '동일한 name의 사용자가 존재합니다'라는 메세지를 ajax를통해 새로고침없이 띄워주고 동일한 name이 존재하지 않으면 회원가입을 정상적으로 처리했다는 ajax를 띄워준다. (실제로 database에 등록된다.) 3.로그인을 누르면 로그인을 할 수 있는form,제출버튼이 포함된 페이지가 표시되고, .. 더보기
[백준(Baekjoon) 4796번](Python) 캠핑 어차피 P>L이고, 최대 몇일을 사용할 수 있는지를 묻는 문제이므로 최소 하루의 텀을 가정할 수 있다. 그러므로 총 휴가기간에서 연속되는 P일을 나눈 몫에다가 L을 곱해주고 L이 총 휴가기간에서 P일을 나눈 나머지 보다 작으면 뒤에 L을 더해주고 아니면 그냥 나머지를 더해준다 백준은 코드의 어느 부분에서 틀린것인지 나오지 않아서, 헤멨는데 출력문에서 띄워쓰기 한칸이 잘못되어 있었다. 문제를 유심히 살펴봐야겠다. 더보기
[백준(Baekjoon) 13904번](Python) 과제 주어진 과제들의 남은 일 수가 가장 큰 것부터 하나씩 줄여가면서 해당 일수 이상 남은 과제들 중 max값을 지운다. 하루에 과제는 1개씩만 할 수 있으므로 하나씩 줄여가면(리스트에서 빼주면) 리스트에 남은 과제들을 제외한 모든 과제를 수행할떄, 최댓값을 가지게 된다. 처음에는 이문제를 기한이 적게 남은 순으로 정렬해서, 가장 기한이 적게 남은 문제와 다른 문제들을 비교하며 하나씩 리스트에서 제거해주려고 했는데 신경쓸 변수도 많아지고 비효율적으로 문제들을 찾아서 삭제해야 되기 때문에, 역으로 풀었다.(어차피 하루에 하나씩 해결할 수 있으므로, 정확하게 남은 기한을 줄여가며 문제를 해결할 필요가 없다.) 더보기
[백준(Baekjoon) 1520번](Python) 내리막길 경로를 찾기위하여 dfs를 수행하되, 좌표마다 해당 좌표에서 도착지점까지 갈수 있는 경로수를 갱신하면서(dp) 비용을 줄인다. 재귀문이 끝나면 dfs를 호출한 지점에서의 dp값은 도착지점까지 갈 수 있는 모든 경로의 수가 된다. 처음에 bfs와 dfs로 풀었을때 시간초과가 나서 구글링을 해본 결과 dynamic programming을 섞어서 풀어야 한다는 사실을 배웠다. 생각하기 어려웠던 문제다. 추가적으로 파이썬에는 시스템의 안전성을 위해서 재귀깊이가 기본값으로 설정이 되어있는데, 이를 더 늘려야 한다는 사실을 깨달았다. 더보기
[백준(Baekjoon) 1449번](Python) 수리공 항승 테이프의 현재 위치와 이전 위치의 차이를 뺀 수들을 합해가며 테이프 길이 내에 있는 지 확인하고, 만약 테이프가 모자라는 위치에서 물이 새면 테이프 갯수를 늘려준다. 수리된 위치는 리스트에서 빼주면서 해당 리스트의 길이가 0보다 클때 까지 계속 반복하면 정답이 나오게 된다. 입력이 여유롭게 주어져서 굳이 깔끔하고 효율적인 알고리즘을 생각해보지 않고 풀었다. 나중에 구글링 해보니까 물이세는 시작 위치를 기준으로 테이프를 붙여놓고 테이프 범위내에 몇군데나 물이세는 곳이 있는지를 세어보는 간단한 방법도 있었다. 더보기