파이선에서 list를 뒤집는 연산은 꽤 많이 쓰입니다. 어떻게 뒤집는지 알아봅시다. 먼저 [::-1]입니다. 이것은, 리스트를 역순으로 뒤집습니다. 실행 결과는 아래와 같습니다. yrotselpam 메이플 스토리가 뒤집어진 모양입니다. 이는 step이 -1이였기 때문입니다. -1은, 역순으로 1칸씩 이동한다는 의미입니다. -2를 하면 어떨까요? 역순으로 2칸씩 이동할까요? 직접 입력해 보겠습니다. li[::-2]를 입력해 보았습니다. 그러면 yosla가 출력됨을 알 수 있는데요. y로부터 역순으로 2칸 가면 o가 나오고, o에서 2칸 역순으로 가면 s가 나옵니다. s에서 2칸 왼쪽으로 가면 l이 나오고, 또 거기서 왼쪽으로 2칸 가면 a가 나옵니다. 즉, -2는 왼쪽으로 2칸씩 이동한다는 의미입니다. 저..
코딩 검색 결과
예전에 게시판을 구현했을 때 페이징 처리를 해야 할 일이 있었습니다. 어떻게 처리할 지 고민하다가, limit와 offset 조합으로 처리하였던 기억이 납니다. 컬럼 수가 그리 많지 않다면, 시도해 보아도 괜찮은 방법 중 하나입니다. 실제로, 해커랭크나, 다른 사이트 sql 문제들을 풀고 나서, 다른 분들의 코드를 보면 limit는 정말 많이 볼 수 있음을 알 수 있습니다. 특히 rank 관련해서요. 예를 들어서, 모든 사람들의 score 값이 다 다를 때, k위를 한 사람을 구하는 쿼리를 쓸 때, 정렬하고 offset, limit 조합을 쓰면 너무 쉽게 처리할 수 있습니다. 예제 상황을 가지고 오겠습니다. dbeaver의 예제 데이터 베이스에는, Album 테이블이 있습니다. 그리고, Track이 있습..
안녕하세요. 이번 시간에는 for in문에 대해서 알아보겠습니다. 보통 ps를 하거나, 코테를 준비한다고 하면, 저는 3개만 잘 하라고 합니다. balanced tree, hash, array. 이 3개에서 거의 벗어나지 않기 때문이에요. 이 3개를 가지고 for in 문을 갖고 놀아보겠습니다. 기본적으로 파이선은 bintree 계열이 없는 듯 하니, bintree 패키지를 깔아줍시다. 가상 환경에 깔아두면 유용하게 써먹을 수 있습니다. 이것은 rb 트리 뿐만이 아니라, AVL도 포함하고 있습니다. 프로그램은 간단합니다. 30번 loop를 돌면서, tree에 (x,1) pair를 추가합니다. 그리고 8번째 줄에서 뭔가를 하는 듯 보입니다. 출력 결과를 봅시다. 트리 안에 있는 (K, V)쌍을 출력했음을 ..
파이선으로 백준을 푸시다 보면, 이런 거 한 번 쯤 복사 붙여넣기 하신 적이 있을 겁니다. 이 포스트에서는 노란 부분 말고, 파이썬 map 함수만 알아보도록 하겠습니다. 공식 문서에 보면, 이 함수는 다음과 같이 설명이 되어 있습니다. 먼저, iterable부터 봅시다. 이터레이터. 어디에서 동작했나요? c++의 STL에서는 vector, map 등에서 동작했습니다. 즉, 순회 가능한 무언가라는 것입니다. 예를 들자면, python의 list는 동적 배열입니다. 이것은 순회 가능한 자료구조 중 하나입니다. 여기서 next를 부르면, 이터는 현재 가리키고 있는 2 다음 원소인 3을 가르킵니다. 그러면, 2번째 인자가 이해가 되실 겁니다. input().split()은 입력받은 문자열에 대해서, white ..
약 5개월 전에, define 전처리문에 대해서 썼습니다. 이번 시간에는 조건부 컴파일을 할 때 많이 써먹는, #if와 #ifdef에 대한 글을 써보도록 하겠습니다. 당연하게도, 백준 사이트에서도 많이 볼 수 있는 코드이기도 합니다. 먼저 위 코드를 보겠습니다. 이상한 va_list라던지 va_start, vprintf, va_end가 나오지만, 여기에서는 중요하지 않습니다. 단지, 가변 인자를 처리하기 위해서 저런 것들을 썼다 정도만 보시면 되고요. 여기서 중요한 것은 13번째 줄의 #ifdef입니다. 이것은 무엇을 하는 것일까요? 위에 보니까 DEBUG라는 것이 정의가 되어 있지 않아요. 아무 결과도 나타나지 않았습니다. 반면에, 이 코드는 위에서 DEBUG라는 필드가 정의되어 있었습니다. 이 경우에..
최근댓글