
유클리드 호제법 (Euclidean algorithm)
2023. 3. 17. 10:55
알고리즘/개념정리
유클리드 호제법 2개의 자연수 또는 정수의 최대공약수 를 구하는 알고리즘의 하나이다. 호제법 이란 말은 두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘이다. 2개의 자연수 a, b 가 있다고 했을 때 a 를 b 로 나눈 나머지 를 r 이라고 하면 (단, a>b ) a 와 b 의 최대공약수 는 b 와 r 의 최대공약수 와 같다. b 를 r 로 나눈 나머지 를 r’ → r 을 r’ 로 나눈 나머지 위의 과정을 반복해서 나머지가 0이 되었을 때의 수가 a 와 b 의 최대공약수 이다. 이런 과정을 거쳐 다음 정리를 이용해서 유클리드 호제법 이 성립하게 된다. 정리 a, b 는 정수, a 를 b 로 나눈 나머지가 r 이라고 하자. ( a ≥ b , r은 0 ≤ r < b 인 정수) a 와 b ..

Mysql - ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
2023. 3. 8. 12:44
데이터 엔지니어링/Database
mysql 을 유저와 패스워드 없이 접속할 때 다음과 같은 에러가 발생한다. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 하지만 다음과 같이 유저와 패스워드를 입력해서 접속하면 정상적으로 접속되는 것을 확인할 수 있다. 물론 접속할 수 있는 방법은 있다. 패스워드를 제거해주면 된다. 다만, 실제 서비스에서는 보안상 위험하기 때문에 유저를 별도로 생성해 유저와 패스워드를 입력해서 접속하는 것을 권장한다. 패스워드를 변경하는 방법은 다음과 같이 mysql document 에서 확인할 수 있다. https://dev.mysql.com/doc/refman/5.7/en/assigning-passwords.htm..

Docker Mysql 5.7 설치하기
2023. 3. 8. 12:27
DevOps/Docker
Docker 에서 mysql 을 설치하는 과정을 정리해봤다. 먼저 도커 에서 mysql 이미지를 확인해본다. docker search mysql 사진과 같이 mysql 의 이미지를 확인할 수 있다. 나는 mysql 5.7 버전을 사용할 예정이라 mysql 5.7 버전의 이미지를 가져왔다.(pull) 버전은 해당 이미지의 태그를 나타내는 콜론(:) 을 사용해 버전을 입력할 수 있다. docker pull mysql:5.7 그리고 설치된 이미지를 확인할 수 있다. 이제 mysql 이미지를 통해 도커 컨테이너를 실행해보자. 아래와 같이 실행할 경우 컨테이너 실행이 제대로 되지 않았다. docker run -d --name mysql-5.7 -p 3306:3306 mysql:5.7 그래서 로그를 확인해보니 다음..
Python reduce() 함수
2023. 3. 1. 16:32
프로그래밍 언어/Python
redue() 함수 reduce() 함수는 “반복 가능한 객체(iterable object)” 의 각 요소를 연산한 후 이전 연산 결과들과 누적해서 반환해주는 함수이다. 쉽게 말해 연산의 결과들을 누적해서 반환해준다고 볼 수 있다. 여기서, 반복 가능한 객체는 말 그대로 반복이 가능한 객체로 요소가 하나의 객체에 들어있고 한번에 하나의 요소를 가져와서 사용할 수 있는 객체를 말한다. 파이썬에서는 String, list, dict, tuple, set 이 있는 것을 알 수 있다. reduce() 함수를 사용하기 위해서는 functools 모듈에서 reduce() 함수를 불러와야 한다. 예를 들어 사용해보자. 리스트 모든 원소의 곱셈 numbers = [1, 2, 3, 4, 5] sum_numbers = r..

Python open() 내장 함수
2023. 3. 1. 16:29
프로그래밍 언어/Python
open() 내장 함수 open 함수는 파이썬의 기본 내장함수이다. 이름을 보면 알 수 있듯이 무언가를 열 때 사용하는 함수이다. 주로 파일을 열어서 읽어오고 저장할 때 주로 사용하게 된다. 기본적으로 with 문을 통해 open() 내장함수를 호출하는 것을 권장하고 있다. with 문을 사용하지 않을 경우 파일 닫기를 스스로 해줘야 해서 불필요하게 코드가 지저분해지기 때문에 with 문을 함께 사용하는 것이 좋다. open() 함수 문법 open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) [주요 파라미터] mode : 파일이 열리는 옵션, 모드 라고 한다. 'r' : 읽..
Python Asterisk(*)
2023. 2. 28. 11:40
프로그래밍 언어/Python
파이썬 asterisk(*) 이란 파이썬에서 asterisk(*) 은 다음과 같은 상황에서 사용된다. 곱셈 및 거듭제곱 연산으로 사용할 때 리스트형 컨테이너 타입의 데이터를 반복 확장하고자 할 때 가변인자(Variadic Arguments) 를 사용하고자할 때 컨테이너 타입의 데이터를 Unpacking 할 때 곱셈 및 거듭제곱 연산으로 사용할 때 곱셈 연산 (*) >>> 2 * 3 6 거듭제곱 연산 (**) >>> 2 ** 3 8 리스트형 컨테이너 타입의 데이터를 반복 확장하고자 할 때 리스트 생성 및 확장 # '0'의 값을 가진 길이가 100인 리스트 생성 lst = [0] * 100 튜플 생성 및 확장 # '0' 의 값을 가진 길이가 100인 튜플 생성 tp = (0,) * 100 가변인자(Varia..
그리디(Greedy) 알고리즘, 탐욕법
2023. 2. 28. 11:03
알고리즘/개념정리
그리디(Greedy) 알고리즘이란 그리디 알고리즘 은 단순하지만 강력한 문제 해결 방법이다. 국내에서는 그리디 알고리즘 을 탐욕법 으로 소개된다. 따라서, 그리디 알고리즘 이란 현재 상황에서 지금 당장 좋은 것만 고르는 방법 을 의미한다. 그리디 알고리즘은 주로 정렬 알고리즘과 짝을 이뤄 출제된다. 그리디 알고리즘 예제 그리디 알고리즘 을 설명하기 위해 간단한 예를 들어본다. 음식점의 계산을 도와주는 점원이 있다. 이때 거스름돈을 거스러줘야 하는데 500원, 100원, 50원, 10원 짜리 동전이 무한히 존재한다고 가정하자. 손님에게 거슬러줘야 하는 돈이 N 원일 때 거슬러줘야 할 동전의 최소 개수를 구하라. 이 문제는 그리디 알고리즘을 풀 수 있는 대표적인 문제라고 한다. 바로 가장 큰 화폐단위부터 돈..
오프셋, offset
2023. 2. 28. 10:53
컴퓨터 과학/개념정리
offset, 오프셋 offset 의 사전적 의미는 상쇄하다, 벌충하다, 차감을 계산하다, 편차 등의 의미로 해석된다. 컴퓨터 과학에서 배열이나 자료 구조 오브젝트 내의 offset 은 일반적으로 동일 오브젝트 안에 처음부터 주어진 요소나 지점까지의 변위차를 나타내는 정수형이다. 예를 들어, “abcdef” 라는 문자열이 있다면 ‘c’ 문자는 ‘a’ 부터 2의 오프셋 을 지닌다고 할 수 있다. 어셈블리어와 같은 저급 프로그래밍 언어에서 오프셋 은 상태 주소(relative address) 로 부른다. 참고 사이트 오프셋 (컴퓨터 과학) - 위키백과, 우리 모두의 백과사전

트리(Tree)
2023. 2. 28. 10:40
컴퓨터 과학/자료구조
트리(Tree) 1개 이상의 유한한 개수의 노드의 집합 루트 노드와 0개 이상의 겹치지 않는 아휘 나무 구조들의 집합으로 이루어짐 용어 정리 노드(node) 와 엣지(edge) 트리 는 전체적으로 노드(node) 와 엣지(edge) 또는 링크(link) 로 표현된다. A, B, C, D, E, F, G 라는 특정 정보가 들어있는 것을 노드라고 한다. 선으로 연결되어있는 것을 엣지라고 부르며 정보들간의 관계를 나타낸다. 따라서, 트리는 기본적으로 노드와 엣지로 구성되어있다. path 엣지에 의해 연결된 노드들의 집합을 말한다. root node 최상위 노드를 말한다. parent, children, siblin, grandparent, ancestor 자기 자신의 노드를 기준으로 아래와 같이 구분할 수 있..

네이버 웹툰 실무 면접 후기
2023. 2. 10. 13:17
제이로그/면접후기
한 달 전 채용 플랫폼을 통해 네이버웹툰의 리크루터에게 데이터 엔지니어에 지원할 생각이 없냐는 연락이 왔다. 나는 네이버웹툰을 정말 좋아했고 가고 싶은 회사 중 하나였기 때문에 고민 없이 지원하겠다고 답을 했고 그렇게 네이버웹툰 데이터 엔지니어 신입으로 지원하게 되었다. 채용 사이트에서 열심히 지원서를 작성하고 제출하고나서 며칠이 지나 연락이 왔다. 지원서 리뷰 전형에 합격했고 이어서 진행되는 코딩 테스트에 대해서 설명해주는 메시지가 왔다. 코딩테스트는 라이브 코딩 테스트 전형으로 진행된다고 해서 쉽지 않겠다는 생각이 들었던 것 같다. 그리고 네이버 웹툰의 경우 메일로 결과 발표가 나는 게 아니라 채용 사이트의 개인 계정으로 연락을 해준다는 점이 신기했던 것 같다. 그렇게 나는 코딩 테스트를 준비하게 되..