가비지 컬렉션이란? 모든 언어에서 변수를 등록하면 변수에 메모리가 메모리의 주소값이 할당된다. 그리고 변수의 크기만큼 메모리를 쓰게되는데 이 메모리는 우리가 알고있는 RAM을 의미한다. RAM은 휘발성 저장공간이다. 용량이 적지만 컴퓨터를 끄면 사라지는 데이터 공간이다. 대신에 빠르다. 만약 이 메모리 공간을 비효율적으로 사용하여 사용자의 메모리를 많이 잡아먹는다면 흔히 렉이 걸린다고 하듯 프로그램이 느려질 수 있다. 따라서 이 공간을 효율적으로 관리하는것이 프로그램을 빠르게 돌리는데에 있어서 중요하다. 가비지 컬렉션은 쓰지않는 값을 모아서 소멸시킨다. 레퍼런스 카운트 레퍼런스(reference) = 참조 파이썬은 변수의 레퍼런스 카운트가 0이 되었을때 그 변수는 소멸 되상이 되고 일정 규칙에 의해 가비..
가끔 파이썬 코딩을 할 때 다음과 같은 경우가 있다. answer = [] for i in arr: if i % 3 == 0: answer.append(i) flag = True break if not flag: answer.append(0) 원래는 위와 같이 flag를 쓰거나 함수를 만들어서 값을 return 해주는 방법으로 바꿔줬는데 더 좋은 방법이 있다. 파이썬에는 다음과 같이 for-else문이 가능하다. answer = [] for i in arr: if i % 3 == 0: answer.append(i) break else: answer.append(0)
보통 코딩테스트를 풀때 sys.stdout.write가 print보다 속도가 빠른 이유로 쓰는 경우가 있습니다. 하지만 sys.stdout.write를 쓸 때 주의해야할 점이 있습니다. import time import sys for i in range(10): sys.stdout.write(str(i)) time.sleep(1) 위와 같은 코드를 실행할 때 어떻게 출력이 될거 같으신가요? 1초마다 0, 1, 2, 3 .. 순서대로 출력이 될 거 같습니다. 하지만 출력해보면 10초 후 0,1,2,3.. 이 한꺼번에 출력됨을 볼 수 있습니다. 위 현상을 해결하려면 sys.stdout.write를 호출 한 후 바로 sys.stdout.flush()를 호출해주거나 print로 변경하면 됩니다. print는 내..
https://leetcode.com/problems/subtree-of-another-tree/ Subtree of Another Tree - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com subRoot 노드가 root 노드의 subtree인지 확인하는 문제입니다. 노드의 val, left, right가 같은지 확인하면서 들어가야해서 두개의 재귀함수가 필요했습니다. None처리가 굉장히 복잡했던 문제.. dfs함수는 root함수를 dfs로 탐색하고, comp..
가치는 피처로 부터 나온다. 피처단위 개발이 중요하다는 내용이 대부분이었습니다. 프로젝트를 구성하고 피처를 구성해나가는일이 우리가 함수를 짤때와 비슷하다고 생각 했습니다.. 먼저 프로그램의 기능이 어떻게 돌아갈지 구상하고 (피처들을 어떻게 나눌지 생각하고) 각 기능별로 결과에 필요한 함수 이름으로 먼저 코드를 작성하고(피처들을 나누고) 그 함수가 먼저 잘 작동하도록 함수 내부의 코드를 작성합니다. (피처의 결과를 낸다) 그리고 함수를 리팩토링 (피처를 강화). 사실 피처단위 개발이 아닌 다른 방법은 무엇을 의미하는지에 대한 설명은 많이 없는거 같아서 아쉬웠습니다. PART2의 내용은 PART1의 내용을 더 보강하는 내용들로 구성되어 있는거 같습니다. 대부분 스타트업을 운영하게 될 사람이 읽어야 할 책 같..
ValueError: I/O operation in closed file 장고의 imageField를 open하고 다시 같은 파일을 open하려고 할때 나는 오류입니다. stackoverflow에서 아래와 같은 코멘트가 있었습니다. "imageField.open() doesn't alter the file's contents, but it does reset the pointer” 따라서 image를 두번 오픈할 때 copy.deepcopy(깊은복사) 로 image를 복사해준 후 open해주면 오류가 나지 않았습니다. 깊은 복사는 내부에 객체들까지 모두 새롭게 copy 되는 것입니다.
[문제] 디딤돌의 내구도와 한번에 건널 수 있는 디딤돌의 갯수가 주어졌을 때 최대 몇명이 건널 수 있는지 계산하는 문제 입니다. 입출력 예시 : stones = [2, 4, 5, 3, 2, 1, 4, 2, 5, 1], k = 3 [풀이] 1. 아주 간단한 방법: 한명씩 건넌다고 치고 stones의 모든 원소값을 1씩 빼고 다시한번 0이하의 값이 연속되는지 확인합니다. 하지만 이 방법은 2중 for문으로 n^2의 시간복잡도가 소요됩니다. 원소의 최대값은 2억이고, 배열의 크기의 최대값은 20만이므로 n^2의 방법으로는 1초안에 풀이가 불가능합니다. 2. 이진탐색법의 LogN의 시간복잡도를 활용 몇명이 건널 수 있는지가 문제이기때문에 몇명인지를 이진탐색으로 탐색해서 구해보면 빠르게 구할 수 있을거 같습니다...
- Total
- Today
- Yesterday
- go context
- 팰린드롬수
- 백준
- conTeXt
- for-else
- 프로그래머스
- query
- 파이썬
- ManyToMany
- stdout
- gunicorn
- Python
- 소프트웨어 장인
- dfs
- go
- 방금그곡
- sql lite
- taggit
- 독후감
- django
- leetcode
- 문자열 뒤집기
- 의대 신경학 강의
- Two Scoops of Django
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |