전체 글 3

[CPython] 2. 덧셈의 시간복잡도는 O(logN)입니다.

Python에서 '수'를 나타내는 자료형은 int형과 float형이다.이러한 값들은 어떠한 데이터로 C++수준에서 작동할까? 먼저 python에서 1000**1000을 계산해 보자. 놀랍게도 잘 출력된다.C++에서는 이러한 값을 저장할 수 있는 기본 타입을 제공하지 않는다.Unsigned long long 은 0~2^64-1의 값을 가지는데, log(2^64-1)는 약 64log2이고, log(1000^1000)=3000이다.그렇다면 python에서는 어떤 타입으로 정수형을 저장하는 것 일까? 간단하게는 단순히 각 정수에 할당된 공간을 늘리는 방법이 있다.typedef unsinged long long ull;struct BigInt { ull a0; ull a1; (...) ull..

CPython 2026.03.04

[CPython] 1. 오브젝트란?

일반적으로 프로그래밍에서 리스트는 다음과 같은 종류의 구현체를 가진다. - Array List - Linked List - ...후에 자세히 설명하겠지만, python에서는 Array List를 이용하여 리스트를 구현한다.그러나 Array List는 각 원소의 크기가 일정해야 하며 이는 가변 크기를 가진 python의 리스트와는 다른 모습이다. 파이썬의 리스트 구현 부분을 보자. [링크]// Copyright (c) Python Software Foundation. Licensed under the PSF License v2.typedef struct { PyObject_VAR_HEAD /* Vector of pointers to list elements. list[0] is ob_item[..

CPython 2026.03.03

[CPython] 0. 인터프리터 언어란?

흔히들 Python은 인터프리터 언어라는 말을 들어 보았을 것이다.이를 알아 보기 위해서는 먼저 컴퓨터의 소스 코드 실행 과정을 알아 보아야 한다. 일반적으로 컴퓨터는 각 CPU별로 미리 정의된 명령어 집합에 따라 명령어를 해석하고 수행한다.이 과정은 논리 회로에 의해 수행되며 그러한 이진 명령어를 보기 좋게 영어로 나타낸 것이 어셈블리어이다.어셈블리어는 거의 기계어와 1대1 대응이 가능하기 때문에 대부분의 언어는 이러한 기계어를 목적 언어로 하여 컴파일한다.*컴파일: 하나의 언어를 다른 언어로 유한 시간 안에, 각 코드에 대해 같은 설정에서는 유일한 결과를 출력하는 과정 컴파일 언어는 실행 전 컴파일을 거쳐 미리 실행 가능한 프로그램(exe 등) 또는 라이브러리(dll 등)으로 변환한 후 실행된다.이..

CPython 2026.03.02