[python] 모듈과 라이브러리를 활용해야 하는 이유 (feat.백준 최대힙)
Python은 편하지만 느리다. Python은 정말 느리다. 정말 정말 느리다. 하지만 편하고 쉽다. 특히 List 자료형은 매우 쉽고 편하다. 당연히 그만큼 많은 리소스를 사용하고, 느린 편이다. 리스트를 잘 활용하면 stack, queue는 물론, tree, heap, 연결 리스트, 해시 테이블 등등등… 수많은 고급 자료형도 어렵지 않게...
Python은 편하지만 느리다. Python은 정말 느리다. 정말 정말 느리다. 하지만 편하고 쉽다. 특히 List 자료형은 매우 쉽고 편하다. 당연히 그만큼 많은 리소스를 사용하고, 느린 편이다. 리스트를 잘 활용하면 stack, queue는 물론, tree, heap, 연결 리스트, 해시 테이블 등등등… 수많은 고급 자료형도 어렵지 않게...
List는 다양한 방법으로 복사가 가능하다. 다만, 필요 시에 따라 복사 방법을 적절히 택해야 하는데, 복사한 객체가 내부적으로 같은 메모리를 참조할 수 있기 때문이다. 이번 포스팅은 내부에 또 다른 복합자료형이 없는 1차원 배열에 국한된 이야기다. 2차원 이상의 배열에 대한 정보는 이 포스트에서 확인할 수 있다. 완전히 같은 메모리를 공...
2차원 이상의 리스트 복사하기 내부의 요소가 모드 기본 자료형인 1차원 배열과 달리, 2차원 배열부터는 리스트를 복사할 때 의도치 않은 문제가 발생하곤 한다. 보통 알고리즘 문제를 풀 때 그러한데, BFS 문제로 visited를 만들 때나 기존 리스트를 복사할 때 문제가 발생한다. 먼저 기존의 리스트와 똑같은 요소를 갖고 있지만, 변경 사항...
Heap 부모 노드의 값이 자식 노드보다 항상 큰(또는 작은) 완전 이진 트리 그림을 보면 쉽게 이해할 수 있다. 이를 리스트로 표현하면 더욱 쉽게 이해할 수 있다. 왜 쓰는 걸까? max (or min) 값이 루트에 위치 기본적으로 자료구조 내의 값에서 최댓값 또는 최솟값은 항상 트리의 루트에 위치하게 된다. 해당 ...
백준 6064 - 카잉달력 [SILVER 1] 리버스 잉카 문명의 달력이다 엌 문제 이딴 달력을 쓰니까 망했지…라고 하기엔 우리나라도 비슷한 게 있다… M과 N보다 작거나 같은 자연수로 연도를 <x, y>와 같이 표현한다. 우리나라가 당해의 이름을 정할 때와 같은 방식이다. 갑을병정… 등의 십간(十干)과 자축인묘… 등의 십이...
백준 5525 - ioioi [SIVLER 1] 5525_ioioi 벌써 프듀 시즌1이 7년 전이다? 문제 최초 입력 N이 들어오면, N+1 개의 I와 N개의 O가 교차로 나오는 문자열을 Pn이라 한다. 즉, IOI 는 P1, IOIOI는 P2를 의미한다. N과 문자열 S의 길이, 그리고 문자열 S가 들어왔을 때, S안에는 Pn이 몇 ...
백준 5439 - AC [GOLD 5] 5430_AC 문제 선영이는 할 짓이 없어서 AC라는 언어를 만들었다고 한다. 커도 반 센세인가? 정수 배열을 연산하기 위한 언어로, 두 가지 함수가 존재한다. R(뒤집기)는 List.reversed(), D(드랍)은 del List[0]이다. 배열이 비어있을 때 D를 사용하면 에러가 발생한다. 함...
백준 2630 - 색종이 만들기 [SILVER 2] 1과 0으로 이루어진, 길이가 똑같은 2차원 배열이 들어온다. N/2 길이의 2차원 배열로 내부를 나눌 때, 나눈 배열 안이 한 가지 수로만 이루어져 있으면 해당 색깔 (1: 파랑, 0: 하양) 색종이가 완성된 것으로 친다. 모든 부분을 나누었을 때, 각각 완성된 색종이는 몇 개인가? ...
백준 2606 - 바이러스 [SILVER 3] N개의 컴퓨터와 N개의 연관 관계가 있다. 1번 컴퓨터가 바이러스에 감염되었을 때, 1번 컴퓨터로 인해 몇 개의 컴퓨터가 바이러스에 감염되었는가? BFS 매우 간단한 BFS 문제다. 특별한 조건 없이, 1번 컴퓨터로 인해 감염된 컴퓨터의 개수만 구하면 된다. 컴퓨터를 N+1의 리스트로 만들...
백준 2579 - 계단오르기 [SILVER 3] 0부터 N까지의 계단을 오르는데, 다음 칸 또는 다다음 칸으로 이동할 수 있다. 다만, 연속된 계단을 세 번 이상 밟으면 안 되며, 세 칸 이상 한번에 올라갈 수 없다. 계단마다 점수가 있으며, 이 점수를 최대화 할 수 있는 방법을 찾는다. 첫 번째 시도, BFS와 브루트 포스 n번째...