본문 바로가기

CS3

시간 복잡도를 믿고, 나를 의심하기 알고리즘과 관련된 코딩을 하다보면, 시간 복잡도 O(n), O(n^2) 이런 것들을 고려해 접근하게 된다. 예시로 함께 해보자. 5x5의 격자에서 랜덤한 위치에 광물이 1개씩 놓여 있다 가정해보자. 이때 한번에 1x3의 크기만을 탐색할 수 있다면, 어떤 부분에서 최대의 광물 수를 확인할 수 있을까? 나는 뒤도 돌아보지 않고 2중 for문을 이용해 가능한 모든 직사각형을 탐색할 것이다. 물론 가로로 긴 직사각형만을 가정하자! 코드로 확인해본다면, for i in range(0, 5): for j in range(0, 3): //체크 세로는 위와 같이 j 인덱스는 5 끝까지 체크하지 않을 것이고, 가로로는 직사각형 가로의 길이 즉 길이 3이 벗어나지 않는 시작점인 2까지만 체크를 해볼 것이다. 이렇게 하는 .. 2024. 4. 7.
equal의 동작 방식과 최적화 python에서 string 타입의 equal이 어떻게 동작하는지 궁금해 찾아보며 공부한 내용을 기록합니다. 파이썬은 문법은 파이썬을 따르지만, 그 내부 동작 원리는 C언어를 기본으로 합니다. 아래의 링크에서 모든 파이썬 API가 내부적으로는 C언어로 만들어져 있는 것을 확인할 수 있죠 https://github.com/python/cpython GitHub - python/cpython: The Python programming language The Python programming language. Contribute to python/cpython development by creating an account on GitHub. github.com 많고 많은 함수 중 제가 집중해본 함수는 unic.. 2024. 4. 1.
Swift에서의 메모리 관리 먼저 메모리 관리에 앞서 메모리가 뭘까? 노트북을 사게 될때, 램은 몇기가가 좋아요? 8g? 16g? 와 같은 말을 하게 된다. 이때 이 램이 바로 우리가 말하는 메모리이다! 램(메모리)이란, '그 용량이 크면 클수록 저장할 수 있는 공간이 커져 동시에 여러 일을 더 잘 할 수 있게 만들어 준다 '라고 이해하면 아주 간단한 이해다. + 프로그램이 실행되는 동안, 필요한 정보를 저장해 컴퓨터의 빠른 연산에 도움을 준다고 생각하면 된다. 실제로 프로그램이 실행되려면, 메모리에 프로그램이 올라간다. 라는 표현이 있는데, 이는 실행시킨 프로그램의 명령어들과 실행되는데 필요한 데이터들이 메모리에 위치한다 라고 이해하면 된다! 컴퓨터를 사용할때, 언제나 우린 메모리를 사용하고 있다. 그러나 그 메모리는 한정된 재화.. 2022. 8. 28.