본문 바로가기

파이썬(Python)/문법 내용정리12

빗물 트래핑 Q. 높이를 입력받아, 비가 온 후 얼마나 많은 물이 쌓일 수 있는지 계산하라. ex) [3, 0, 1] -> 1 , [1, 4, 1, 5] -> 3 1. 투 포인터 활용 두 개의 포인터를 리스트의 맨 왼쪽, 오른쪽에서 각각 중앙을 향해 출발시킨다. 양쪽의 왼쪽에서 가장 높은 값, 오른쪽에서 가장 높은 값 중에서 더 작은 쪽을 큰 쪽을 향해 이동시킨다 (left_max가 3이고 right_max가 5인 경우 left가 우측으로 1칸 이동) 이때 왼쪽을 예로 들자면, 왼쪽부터 우측으로 이동하며 높이가 낮아지는 경우 낮아진 만큼을 결과값에 합산하고, 높이가 높아지는 경우에는 해당 인덱스를 left_max로 갱신한다. (오른쪽도 방향만 반대일 뿐 동일하다) 위의 과정을 반복하면, 결국 left와 right가 .. 2021. 2. 11.
함수 인자 전달 C언어나 C++을 공부하다 보면, 함수에 인자를 전달하는 방식으로 Call by value, 또는 Call by pointer이나 reference 등의 방식을 본 적이 있을 것이다. 파이썬에서는 이들과도 조금 다른 방식으로 인자를 전달하는데, 일반적으로 Call by object reference 라고 한다 (Call by Sharing이라고도 한다). 즉 객체의 형태로 인자를 전달하되, 레퍼런스, 즉 참조의 방식으로 전달한다. 또 변수가 수정 가능한지 아닌지에 따라 결과에 차이가 있다. ... 무슨 이야기인지 나도 처음에는 이해가 잘 가지 않았는데, 아래의 예시들을 통해 이해해 보자. int와 list, 두 가지의 자료형을 통해 설명해 보고자 한다. 목차 1. int (immutable 대표주자) 2.. 2021. 2. 7.
객체 in Python 파이썬의 모든 자료형은 객체이다. C언어를 예로 들어보자. C언어에서 int num = 10; 과 같이 정수 변수를 하나 생성한다면, 4byte (아주 옛날 프로세서가 아니라면) 만큼의 메모리에 10을 저장하는 방식으로 동작한다. 따라서 C언어에서 정수의 크기는 4byte이다. 또한 정수들로 이루어진 배열을 생성하게 되면, '4 x 배열의 길이' 만큼의 메모리를 차지한다. 그렇다면 파이썬에서 정수의 크기는 4byte일까? 직접 확인해 보자. >>> num = 10 >>> num.__sizeof__() 28 무려 28바이트이다. 이는 파이썬의 특성 때문인데, 파이썬은 모든 자료형이 객체이다. 아래는 위의 num 변수가 가지고 있는 '내장 변수' 들을 출력하는 코드이다. >>> import pprint # .. 2021. 2. 7.
Collections 모듈 - Counter 파이썬의 collections 모듈은 데이터를 다루기 위한 유용한 컨테이너 객체를 지원한다. 알고리즘 공부를 하면서 이 collections 모듈을 자주 사용하는 관계로, 정리해 보기로 했다. Collections 모듈에는 Counter, Defaultdict, Orderdict(요즘은 의미가 거의 없지만), deque, namedtuple 등 여러 가지 데이터타입을 지원하는데, 여기서는 가장 많이 쓰이는 타입 중 하나인 Counter에 대해 알아보고자 한다. 추후 나머지 데이터타입들에 대해서도 유용한 것은 정리해볼 예정이다 (근데 그러면 글 순서는 어떻게 해야되지...?) 1. 객체 초기화 class collections.Counter([iterable-or-mapping]) Counter 객체는 di.. 2021. 1. 31.
Type Hint (타입 힌트) 파이썬은 기본적으로 동적 타입의 언어이다. 즉 정수를 저장하는 변수인 number에 10을 저장할 때, number라는 변수가 정수 자료형인지를 명시해줄 필요가 없다. 이는 정적 타입 언어인 c, c++ 등과 대비되는 특징이며, 파이썬의 난이도를 쉽게 만드는 장점이 된다. 하지만 동적인 자료형은 때때로 독이 되기도 한다. 코드를 읽어볼 때 자료형을 바로바로 알 수 없으니 가독성이 떨어질 수도 있고, 코드를 유지보수 하는 데에도 애를 먹기 쉽다. 따라서 복잡한 코드를 작성하는 경우에는 자료형을 표기하는 편이 좋다. 또한 파이썬은 변수의 자료형을 표기하는 Type Hint 기능을 제공하고 있다. 더보기 정적 타입 변수의 자료형을 컴파일 시에 결정하며, 따라서 구현 시에 미리 변수형을 지정해 주어야 한다. C.. 2021. 1. 29.