[Programmers] 이진 변환 반복하기 (월간 코드 챌린지 시즌1 - Level2, Python3)

코딩테스트 연습 - 이진 변환 반복하기 programmers.co.kr 문제 설명 0과 1로 이루어진 어떤 문자열 x에 대한 이진 변환을 다음과 같이 정의합니다. x의 모든 0을 제거합니다. x의 길이를 c라고 하면, x를 "c를 2진법으로 표현한 문자열"로 바꿉니다. 예를 들어, x = "0111010"이라면, x에 이진 변환을 가하면 x = "0111010" -> "1111" -> "100" 이 됩니다. 0과 1로 이루어진 문자열 s가 매개변수로 주어집니다. s가 "1"이 될 때까지 계속해서 s에 이진 변환을 가했을 때, 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 담아 return 하도록 solution 함수를 완성해주세요. 제한 사항 s의 길이는 1 이상 150,000 ..

[Programmers] 삼각 달팽이 (월간 코드 챌린지 시즌1 - Level2, Python3)

코딩테스트 연습 - 삼각 달팽이 5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] programmers.co.kr 문제 설명 정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 배열을 return 하도록 solution 함수를 완성해주세요. 제한 사항 n은 1 이상 1,000 이하입니다. 입출력 예 n result 4 [1,2,9,3,10,8,4,5,6,7] 5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,..

[Programmers] 3진법 뒤집기 (월간 코드 챌린지 시즌1 - Level1, Python3)

코딩테스트 연습 - 3진법 뒤집기 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수 programmers.co.kr 문제 설명 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한 사항 n은 1 이상 100,000,000 이하인 자연수입니다. 입출력 예 n result 45 7 125 229 힌트 더보기 진법 변환에 대한 문제이다. 혹시나 N진법의 표현법에 대해 잘 모른다면 이것에 대해 먼저 알아볼 필요가 있다...

[Programmers] 두 개 뽑아서 더하기 (월간 코드 챌린지 시즌1 - Level1, Python3)

코딩테스트 연습 - 두 개 뽑아서 더하기 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한 programmers.co.kr 문제 설명 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한 사항 numbers의 길이는 2 이상 100 이하입니다. numbers의 모든 수는 0 이상 100 이하입니다. 입출력 예 numbers result [2,1,3,4,1] [2,3,4,..

[Programmers] 내적 (월간 코드 챌린지 시즌1 - Level1, Python3)

코딩테스트 연습 - 내적 길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요. 이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 programmers.co.kr 문제 설명 길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요. 이 때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 길이) 제한 사항 a, b의 길이는 1 이상 1,000 이하입니다. a, b의 모든 수는 -1,..

Ubuntu.. 자꾸 나를 힘들게한다.. (MACHBASE 설치 과정)

Ubuntu20.04 버전에 MACHBASE를 설치하는 과정에서 최대 열 수 있는 파일의 개수를 늘려주기 위해 정말 많은 시도를 했지만 구글링 했던 방법으로는 대부분 먹히지 않았다. 물론 약간의 환경 차이일 수 있지만 조금 답답한 마음에 조금 메모해둬야겠다. 터미널에 "ulimit -n"을 입력하면 Ubuntu에서 최대 오픈할 수 있는 파일의 개수를 알려준다. 기본값은 1024로 세팅되어있었는데 MACHBASE에서는 최소한 8192 이상의 제한을 필요로 한다. 내가 해결했던 방법은 아래와 같다. 1. vim /etc/systemd/user.conf 2. DefaultLimitNOFILE=65535 답답함이 해결됐다. https://superuser.com/questions/1200539/cannot-in..

pip, pip3 설치하기 - 파이썬 3 (Python 3) - For Windows & Linux

1. pip이란 무엇인가? Python 언어를 설치하고 나면 pip 또는 pip3라는 명령어를 사용할 경우가 많다. (물론 파이썬 언어를 처음 배운다면 사용할 일이 거의 없을 것이다.) pip 명령어는 파이썬으로 작성된 패키지 라이브러리를 설치하고 관리할 때 사용한다. 여기서 패키지 라이브러리란 무엇일까? 파이썬은 파이썬 언어에서 기본적으로 제공하는 많은 기능들이 있지만 이외에도 pip 명령어로 설치 가능한 여러 가지 패키지 라이브러리가 있는데 주로 데이터 분석 및 인공지능 분야에서 이런 추가적인 모듈을 많이 사용한다. (ex. numpy, pandas, tensorflow, matplotlib 등등..) 이런 패키지들은 PyPI (Python Package Index)라고 하는 패키지 저장소에서 가져오..

Grafana 간단 소개 및 설치하기 (For Windows & Linux)

0. 들어가기 전에 데이터를 분석하다 보면 데이터를 가공하고 분석하고 학습하는 것도 중요하지만 데이터를 시각화하는 것 또한 중요하다. 내가 분석한 정형화 데이터를 있는 그대로 보면 눈에 안 들어오는 것이 당연하다. 그래서 이번에는 저장된 데이터를 차트, 그래프 등을 통해서 간편하게 시각화해주는 도구인 Grafana에 대해서 알아볼 것이다. Grafana는 주로 시계열 데이터베이스와 함께 주로 사용된다. 1. Grafana란 무엇인가? Grafana는 데이터 소스로부터 차트, 그래프, 알람 등을 웹 환경에서 제공해주는 interactive visualization web application이다. 주로 InfluxDB, Prometheus, Graphite 등의 시계열 데이터베이스와 함께 사용되며 실시간 ..

InfluxDB와 Python3 연동하기 (For Windows & Ubuntu)

0. 들어가기 전에 지금까지 시계열 데이터베이스, InfluxDB에 대해 알아보았다. 이 시계열 데이터베이스는 주로 데이터를 분석이나 인공지능 분야에서 많이 사용이 될 텐데 이 계열에서 가장 많이 사용하는 언어가 Python이다. 고맙게도 InfluxDB에서 Python API를 지원한다. (Sphinx로 작성한듯하다.) 그래서 이번 시간에는 InfluxDB를 Python에서 사용하는 방법을 알아볼 것이다. 혹시나 아직 InfluxDB가 설치되어 있지 않다면 아래 링크를 참고하자. foreverhappiness.tistory.com/59 InfluxDB 소개 및 설치 (For Windows & Ubuntu) 0. 들어가기 전에 시계열 데이터베이스(TSDB, Time-Series Database) 중에서 ..

InfluxDB에서 Retention Policy 설정하기

0. 들어가기 전에 지난 포스팅에서 InfluxDB의 기본 사용법에 대해 알아보았다. 그중 데이터를 삭제하기 위해 DELETE 쿼리문이 있음을 보았는데 실제로 시계열 데이터베이스에서는 직접 쿼리문을 통해 데이터를 삭제하지 않는다. 그 이유는 시계열 데이터베이스의 주목적이 데이터 삽입과 조회에 있기 때문이다. 실시간으로 수집된 데이터에서 명시적으로 어떠한 데이터를 삭제하게 된다면 이것은 시스템적으로 에러를 불러일으키거나 분석에 있어 모순될 수 있다. 하지만 마냥 데이터를 삭제하지 않고 계속 수집만 할 것인가? 그건 또 아니다. 초당 수많은 데이터를 읽어들이다보면 메모리도 많이 잡아먹게 될 것이고 속도도 많이 느려질 것이다. 이때 사용하는것이 Retention Policy(보존 정책)이다. 1. Retent..