본문 바로가기
728x90

전체 글171

프로세스 메모리 구조 프로세스 메모리 구조 프로그램이 실행되기 위해서는 먼저 프로그램이 운영체제로부터 메모리 공간을 할당받아야 한다. 따라서 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리 공간을 제공하는데, 프로그램이 운영체제로부터 할당받는 대표적인 메모리 공간에는 4가지 영역이 존재한다. 코드 영역과 데이터 영역은 프로세스가 실행되기 직전에 위치와 크기가 결정되고 실행되는 동안 변하지 않으므로 정적 할당 영역이라고 부른다. 1. 코드(code) 영역: 실행할 프로그램의 코드가 저장되는 영역 2. 데이터(data) 영역: 프로그램이 사용하려고 미리 정의한 변수와 데이터가 저장되는 영역 스택 영역과 힙 영역은 스레드가 작업하면서 값이 바뀌거나 새로 만들 만들어지거나 사라지는 동적 할당 영역이다. 3. 스택(stack.. 2022. 8. 15.
Stack, Queue, Recursive Function " 그래프를 탐색하기 위한 대표적인 두 가지 알고리즘 " 탐색(Search)이란??? - 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정 - 프로그래밍에서는 그래프, 트리 등의 자료구조 안에서 탐색을 하는 문제를 자주 다룬다. - DFS / BFS를 제대로 이해하려면 기본 자료구조인 stack과 queue에 대한 이해가 전제되어야함 자료구조(Data Structure)란??? - 데이터를 표현하고 관리하고 처리하기 위한 구조 - Stack과 Queue는 자료구조의 기초 개념으로 다음의 두 핵심적인 함수로 구성됨 ## Python에서 스택을 이용할 때에는 별도의 라이브러리 사용할 필요가 없다. why?? append(), pop() 메서드를 이용하면 스택 자료구조와 동일하게 동작한다. * 삽입(Push.. 2022. 8. 13.
Implementation(구현) '머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정' - 개발할 때 프로그래밍 언어의 문법에 능숙하고 코드 작성 속도(타이핑)가 빠른 사람을 보고 "피지컬이 좋다" 라고 함 => 구현 유형의 문제는 "피지컬을 요구하는 문제"라고도 할 수 있음 1. 알고리즘은 간단한데 코드가 지나칠 만큼 길어지는 문제 2. 특정 소수점 자리까지 출력해야 하는 문제 3. 문자열이 입력으로 주어졌을 때 문자 단위로 끊어서 리스트에 넣어야(=파싱을 해야 하는) 하는 문제 "Parsing???" - 언어학에서 parsing은 구문 분석이라고도하며 문장을 그것을 이루고 있는 구성 성분으로 분해하고 그들 사이의 위계 관계를 분석하여 문장의 구조를 결정하는 것 https://na27.tistory.com/230 Parsing (파싱) .. 2022. 8. 11.
Greedy(탐욕) ' 현재 상황에서 지금 당장 좋은 것만 고르는 방법 ' ' 사전에 외우고 있지 않아도 풀 수 있을 가능성이 높은 문제 유형 ' - 최단 경로를 빠르게 찾아야 하는 문제는 플로이드 워셜(Floyd-Warshall) or 다익스트라(Dijkstra) 알고리즘을 알고 있어야한다. 특히, 다익스트라 알고리즘은 그리드 알고리즘으로 분류됨 - 그리디 알고리즘이면서도 ' 암기 ' 가 필요한 알고리즘 - But 단순 암기를 통해 모든 문제를 대처하기는 어렵다는 점을 이해하자 1. 바로 문제 유형을 파악하기 어렵다면 그리디 알고리즘을 의심하고, 문제를 해결할 수 있는 탐욕적인 해결법이 존재하는지 고민 2. 그리디 알고리즘으로 해결 방법을 찾을 수 없다면??? -> 다이나믹 프로그래밍, 그래프 알고리즘 고려 # 거스름돈 .. 2022. 8. 9.
sys.stdin.readline(), Python3와 PyPy3 입력의 개수가 많은 경우에는 단순히 input() 함수를 그대로 사용하지는 않는다. 파이썬의 기본 input() 함수는 동작 속도가 느려서 시간 초과로 오답 판정을 받을 수 있기 때문이다. import sys data = sys.stdin.readline() # hello world print(data) hello world # 줄 바꿈 공백 생김 data = sys.stdin.readline().rstrip() print(data) hello world # ex input = sys.stdin.readline n, m = map(int, input().split()) ### map = 각 원소의 어떤 함수를 적용할지 설정할 수 있음 = map 사용후 바로 활용하는 경우에는 list()를 같이 적용해줘야.. 2022. 8. 5.
README template https://gist.github.com/PurpleBooth/109311bb0361f32d87a2#file-readme-template-md A template to make good README.md A template to make good README.md. GitHub Gist: instantly share code, notes, and snippets. gist.github.com https://geniewishescometrue.tistory.com/entry/%EB%A7%88%ED%81%AC%EB%8B%A4%EC%9A%B4-%EA%B4%80%EB%A0%A8-%ED%8C%81-%EA%B8%80-%EC%83%89%EC%83%81-%ED%98%95%EA%B4%91%ED%8E%9C [Markdo.. 2022. 6. 8.
Big O 표기법 실제 알고리즘 러닝타임을 측정하기 위함도 있지만 장기적으로 데이터가 증가함에 따라 처리 시간의 증가율을 예측하기 위해 사용 시간 복잡도, 공간 복잡도 분석은 문제 풀이의 핵심 (= 최악의 경우에 대한 연산 횟수가 중요, 즉 최악의 경우의 시간 복잡도를 우선적으로 고려) (= 시간 제한 1초, 메모리 제한 128MB) * 문제를 해석하기 전에 조건을 먼저 확인 - 문제의 조건부터 확인하면 문제를 풀기 위해 얼마나 효율적인 알고리즘을 작성해야 하는지 알 수 있음 EX) 데이터 개수가 N이 1,000만 개를 넘어가며 시간 제한이 1초라면, 대략 최악의 경우 O(N)의 시간 복잡도로 동작하는 알고리즘을 작성 or 데이터 크기나 탐색 범위가 100억이나 1,000억을 넘어가는 경우 "이진 탐색"과 같이 O(log.. 2022. 6. 4.
Pillow image mode Pillow image mode 이미지의 mode이미지는 픽셀의 유형과 깊이를 정의하는 문자열입니다. 각 픽셀은 비트 심도의 전체 범위를 사용합니다. * 1비트 픽셀의 범위는 0-1이고 * 8비트 픽셀의 범위는 0-255입니다. 일반적으로 이미지는 RGB입니다. 즉, 3개의 채널이 있습니다. 이것은 일반적으로 각 픽셀이 3바이트의 저장 공간을 차지함을 의미합니다. 하나는 빨간색, 하나는 녹색, 하나는 파란색입니다. 모드 이미지가 있는 경우 P이는 팔레트화되었음을 의미합니다. 즉, 최대 256개의 다른 색상을 포함하는 팔레트가 있으며 각 픽셀에 대해 R, G 및 B에 대해 3바이트를 저장하는 대신 팔레트에 대한 인덱스인 1바이트를 저장합니다. 이것은 장점과 단점을 모두 제공합니다. 이점은 이미지에 메모리 .. 2022. 5. 7.
Python 내장함수 및 라이브러리 #for 반복문으로 2차원 리스트 만들기 a = [] # 빈 리스트 생성 for i in range(3): line = [] # 안쪽 리스트로 사용할 빈 리스트 생성 for j in range(2): line.append(0) # 안쪽 리스트에 0 추가 a.append(line) # 전체 리스트에 안쪽 리스트를 추가 print(a) [[0, 0], [0, 0], [0, 0]] # for문 줄이기 a = [[0 for j in range(2)] for i in range(3)] [[0, 0], [0, 0], [0, 0]] #리스트 원소 개수만큼 리스트 만들기 a = [3, 1, 4, 3, 5] # 가로 크기를 저장한 리스트 b = [] # 빈 리스트 생성 for i in a: # 가로 크기를 저장한 리스트.. 2022. 5. 7.
728x90