파이선으로 백준을 푸시다 보면, 이런 거 한 번 쯤 복사 붙여넣기 하신 적이 있을 겁니다. 이 포스트에서는 노란 부분 말고, 파이썬 map 함수만 알아보도록 하겠습니다. 공식 문서에 보면, 이 함수는 다음과 같이 설명이 되어 있습니다. 먼저, iterable부터 봅시다. 이터레이터. 어디에서 동작했나요? c++의 STL에서는 vector, map 등에서 동작했습니다. 즉, 순회 가능한 무언가라는 것입니다. 예를 들자면, python의 list는 동적 배열입니다. 이것은 순회 가능한 자료구조 중 하나입니다. 여기서 next를 부르면, 이터는 현재 가리키고 있는 2 다음 원소인 3을 가르킵니다. 그러면, 2번째 인자가 이해가 되실 겁니다. input().split()은 입력받은 문자열에 대해서, white ..
파이썬 검색 결과
백준 문제를 파이선으로 풀 때, 많이 써먹는 함수 중에 하나는 split입니다. 이 함수에 대해 간단하게 알아보겠습니다. 먼저, input은 입력 받은 것을 str로 리턴해 줍니다. 우리가 python으로 ps를 할 때, input().split()를 많이 써먹습니다. 예를 들자면 아래와 같이 입력이 들어왔을 때입니다. 이것은 공백을 기준으로 나누어진 예입니다. 100, 100을 받으려면, 1번째 줄을 통째로 입력받고 그것을 공백을 기준으로 나눠야 합니다. 이 때 써먹을 수 있는 메서드는 built in 함수인 split 입니다. 사용 용례를 보겠습니다. 결과 먼저 보면, ab-cd-ef로 입력을 받아서, output으로 내놓은 것은 ['ab', 'cd', 'ef'] 입니다. 즉, 무언가를 기준으로 나누..
파이썬에는 built in 함수로 id가 있습니다. 문서에 따르면, 이것은 객체의 고유값을 리턴하는 메서드입니다. cpython은 주솟값을 돌려준다고 문서에 언급이 되어 있습니다. 저는 이 메서드를 어떤 객체를 가리키는지 보기 위해서 쓰곤 합니다. 몇 개의 예를 보고, 톡방에 질문 들어왔던 내용도 보도록 하겠습니다. 예제 1입니다. 그리 어려울 것은 없습니다. a는 배열 [5]를 가리키고, b는 [10]을 가리킵니다. 이 상태에서 id(a)와 id(b)를 출력합니다. 다음에, b에 a를 대입합니다. 다음에, id(b)를 출력합니다. id 값을 찍어보니 위와 같이 나왔습니다. 이것을 trace 해 보도록 하겠습니다. 먼저 4번째 줄 상황을 보겠습니다. id(a)와 id(b)가 달랐습니다. a와 b가 다른 ..
파이선에서 n차원 배열을 초기화 할 일은 꽤 많습니다. 어제도 그러한 코드를 작성했거든요. n = 2일 때만 작성해 보도록 하겠습니다. n > 2이상일 때는 2일 때만 잘 응용하면 되기 때문입니다. 어떻게 해야 하는지 예제 코드들을 보도록 하겠습니다. 요구 사항은 int형 Object를 저장할 2차원 배열을 만들라는 것입니다. 저는 9x9짜리 배열을 만들었습니다. 그런데, 이 코드는 어떻게 동작할까요? 저는 2번째 줄에서 arr[0][0]만 1로 바꾸었습니다. 그런데, arr[0][0]과 arr[1][0]을 출력해 보니, 둘 다 1이 나왔습니다. 왜 그럴까요? 어디선가 주소값만 복사되는 얕은 복사가 일어났기 때문입니다. python에서 id는 해당 객체의 값을 얻어오는 코드입니다. 9개의 루프를 돌면서 ..
백준에서 파이선으로 문제를 몇 개 풀었습니다. 그렇지만 아직 Java나 C만큼 익숙하지 않은 것은 현실입니다. 파이선에는 list.pop(0)이 있는데요. 이것에 대해서 알아보겠습니다. 간단한 테스트 프로그램을 작성해 보겠습니다. 숫자 하나를 테스트 케이스마다 입력 받습니다. 10000000이 nu개 들어있는 리스트가 있는데요. 여기서 맨 앞에 있는 원소를 꺼내 올 겁니다. 이를 9번째 줄의 list.pop(0)이 하고 있습니다. 실행 결과는 어떻게 나올까요? 2000, 20000, 20만 이렇게 범위를 늘려가면서 시간을 측정해 보았는데요. 데이터 크기가 10배 늘어날 때 마다, 대략 100배 정도의 시간이 더 걸림을 알 수 있습니다. while 루프는 원소가 빌 때 까지 돌았으니, 총 nu번 돌았을 겁..
최근댓글