안녕하세요. 이번에도 예약글을 써야 겠어요. 파이썬으로 코테를 준비하시는 경우가 많은 걸로 들었어요. 보통 코테에서는, 전수 탐색과 구현을 버무린 이런 문제들이 종종 출제가 되곤 해요. 잘 읽어보면 아시겠지만, 8문제 세트 중에 2번째 문제로 출제하였습니다. 앞쪽에 배치하였다는 이야기는 풀어야 한다는 의미와도 일맥상통합니다. 그러한 문제들을 풀 때 product, permutations, combinations 함수를 알아두면 좋을 듯 해서 간단하게 소개해 보도록 하겠습니다. 먼저 product 함수입니다. iterable한 것에 대해서 카타시안 곱을 생성합니다. 이렇게만 들으면 뭔가 어려운 거 같습니다. 결과부터 보겠습니다. 어떤 식으로 생성되는지 눈치를 채셨을 텐데요. repeat를 2로 주었어요. ..
코딩 검색 결과
mysql에서 어떻게 결과값을 pivoting 할까를 찾다가 group_concat 함수를 보게 되었습니다. 문서에서 설명하는 것과 같이 집계 함수이니, group by는 들어갈 테고요. 집계된 결과를 concat 하는 함수입니다. 예제를 하나 보겠습니다. titles 테이블에 있는 레코드들을 모두 불러와 봅시다. 우리는 여기서 어떤 일을 할 거냐면요. title, 즉 직급별로 어떤 사람이 있는지를 concat 해서 보여줄 거에요. 예를 들어, Staff이면 집계된 결과가 10002, 10005, ... 이런 식으로 나와야 합니다. 그러기 위해서는 title 별로 집계를 해야 합니다. 따라서 group by title이 들어가야 됩니다. 그런데, 어떤 값들을 concat 할 건가요? 근로자의 번호. 즉 ..
제 토이 프로젝트는 postgresql 12.9를 사용하고 있어요. 특정 api를 호출했을 때 쿼리가 실행이 될 텐데요. 쿼리가 실행될 때 어떤 lock이 걸리는지 간단하게 보기로 하였습니다. 데드락이 생길 수 있을까? 라는 의문이 들었기 때문입니다. 만약에 생긴다면 적당한 방법으로 회피를 해야 하기도 하고요. 그러면 어떤 식으로 lock이 걸리는 지 알아야 할 겁니다. 데이터가 그리 크지 않아서, 쿼리 수행이 매우 순식간에 끝나게 됩니다. 그래서, 쿼리가 실행되는 도중에 잠깐 sleep을 시켜야 됩니다. 이를 위해서 pg_sleep 함수를 이용하였습니다. 사용법은 간단합니다. 안에 몇 초 동안 sleep를 시킬 건지 넣기만 하면 됩니다. 1 row(s) fetched가 있는데요. 옆에 5.89초가 있습..
프로그래머스나 해커랭크에서 sql 문제를 풀다 보면 with 문을 쓰면 더 간결해 지겠구나. 라는 생각이 들 때가 있어요. 이 with절이 그냥 단순하게 실행 결과를 임시로 저장해 두고 쓴다. 정도로만 알고 있었어요. 그런데, recursive하게 써 먹을 수도 있었어요. 꽤 오랜 시간 헤멘 끝에 문서를 보고 약간이나마 이해를 할 수 있게 되었는데요. 이래서 영어 공부가 필요한가 봅니다. 예제 문제를 보면서 같이 쿼리를 작성해 봅시다. 먼저, test 테이블에는 id와 par가 저장되어 있어요. par가 -1인 경우에는 부모가 없다는 뜻이고요. par가 -1이 아닌 0보다 큰 정수라면, 부모가 있다는 뜻입니다. 예를 들어, id가 6인 노드의 부모는 4임을 의미합니다. 이 데이터는 포레스트 형식을 만족해..
안녕하세요. wrong time no see. 이번 시간에는 부동 소수점 연산에서 분배 법칙이 성립하지 않는 데이터를 만들어 보고자 해요. 먼저 결론부터 보여주는 것이 속 편하겠군요. a가 1.5이고, b는 1.0 + 1/2^52, c는 1/2^52입니다. 이 때, a(b+c)와 ab + ac의 값이 다르게 나옵니다. 더 정확하게 말하면, ab + ac를 계산하는 과정에서 오차가 생깁니다. 결과 값으로 나온 d와 e의 비트 표현을 보겠습니다. 어랏? 다르다는 것을 한 번에 알 수 있어요. 왜 다를까요? 하나 하나 tracing을 해 봅시다. 먼저 b, c, b+c를 보겠습니다. b, c, b+c를 비트로 표현하면 요래 되는데요. 먼저, 011 1111 1111과 011 1100 1011은 52만큼 차이남..
최근댓글