728x90

분류 전체보기 368

[Programmers] level2 - [1차] 캐시 (Python) : 2018 KAKAO BLIND RECRUITMENT

▶[1차] 캐시 - 2018 KAKAO BLIND RECRUITMENT (level 2) ▶문제 지도개발팀에서 근무하는 제이지는 지도에서 도시 이름을 검색하면 해당 도시와 관련된 맛집 게시물들을 데이터베이스에서 읽어 보여주는 서비스를 개발하고 있다. 이 프로그램의 테스팅 업무를 담당하고 있는 어피치는 서비스를 오픈하기 전 각 로직에 대한 성능 측정을 수행하였는데, 제이지가 작성한 부분 중 데이터베이스에서 게시물을 가져오는 부분의 실행시간이 너무 오래 걸린다는 것을 알게 되었다. 어피치는 제이지에게 해당 로직을 개선하라고 닦달하기 시작하였고, 제이지는 DB 캐시를 적용하여 성능 개선을 시도하고 있지만 캐시 크기를 얼마로 해야 효율적인지 몰라 난감한 상황이다. 어피치에게 시달리는 제이지를 도와, DB 캐시를..

[Programmers] level1 - 키패드 누르기 (Python) : 2020 카카오 인턴십

▶키패드 누르기 - 2020 카카오 인턴십 (level 1) ▶문제 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다. 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼손 엄지손가락을 사용합니다. 오른쪽 열의 3개의 숫자 3, 6, 9를 입력할 때는 오른손 엄지손가락을 사용합니다. 가운데 열의 4개의 숫자 2, 5, 8, 0을 입력할 때는 두 엄지손가락의 현재..

2022 KAKAO TECH INTERNSHIP

https://careers.kakao.com/jobs/P-13010 카카오 영입 2022 카카오 채용연계형 겨울 Tech 인턴십 - Database Platform Engineer / 테크 / 인턴 careers.kakao.com 요즘 들어 데이터에 많은 관심이 생겼다. 그러던 중 2022 카카오 겨울 TECH 인턴십 모집을 하는 것을 보았다. 지원 기간이 10월 5일부터 24일까지였고, 준비는 거의 일주일 남긴 시점부터 해볼까 했다. 서류 -> 코딩 테스트 -> 과제 -> 1차 인터뷰 이렇게 진행되는 거 같았다. 많은 분야 중에 나는 데이터베이스 플랫폼 엔지니어에 지원했다. 코딩 테스트가 항상 먼저였는데, 이번에는 서류가 먼저였고 급하게 준비를 했다. 자기소개서는 처음 써봤고, 포트폴리오는 아예 없었..

이모저모/일상 2022.11.12

[데이터베이스] SQL - Structured Query Language3

복습하기 위해 학부 수업 내용을 필기한 내용입니다. 이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다. 그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다. 지난 글에 이어서 작성해 보도록 하겠습니다. 2022.11.11 - [컴퓨터공학/데이터베이스] - [데이터베이스] SQL - Structured Query Language2 [데이터베이스] SQL - Structured Query Language2 복습하기 위해 학부 수업 내용을 필기한 내용입니다. 이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다. 그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다. 지난 글 dhalsdl12.tistory.com ▶삽입 SQL 삽입 SQL은 이중 모드 (dual mode..

[데이터베이스] SQL - Structured Query Language2

복습하기 위해 학부 수업 내용을 필기한 내용입니다. 이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다. 그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다. 지난 글에 이어서 작성해 보도록 하겠습니다. 2022.11.10 - [컴퓨터공학/데이터베이스] - [데이터베이스] SQL - Structured Query Language [데이터베이스] SQL - Structured Query Language 복습하기 위해 학부 수업 내용을 필기한 내용입니다. 이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다. 그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다. ▶SQL 개 dhalsdl12.tistory.com ▶SQL 데이터 조작어 검색 ☞ 중첩 질의문(nested ..

[데이터베이스] SQL - Structured Query Language

복습하기 위해 학부 수업 내용을 필기한 내용입니다. 이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다. 그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다. ▶SQL 개요 SQL은 관계형 데이터베이스의 표준 언어로써 모든 주요 제품에서 채택되고 있다. SQL의 특징 데이터 정의어, 데이터 조작어, 데이터 제어어 등 모든 기능 제공한다. 대화형 질의어와 Java, C 등 고급 프로그래밍 언어 내에 SQL이 삽입된 형태로 사용이 가능하다. ▶SQL 데이터 정의어 테이블을 생성하고 정의하거나 새로운 애트리뷰트를 추가/제거할 수 있다. 또한 뷰 생성/제거, 인덱스 생성/제거를 할 수 있다. CREATE TABLE 수강( 학번 INTEGER NOT NULL, 과목코드 CHAR(5) NOT N..

Global Innovator Festa 2022

Global Inovator Festa 2022 줄여서 GIF 2022에 참가했다. 과 홈페이지에 공지가 뜬것을 봤는데, 시험기간이라 그냥 넘어갔다가 친구가 같이하자고 해서 3인 팀을 꾸려서 나가게 되었다. (다행히 전날 시험이 끝났다.) 처음에 들어갈 때는 사진을 별로 찍지 못해서.. 아쉽게도 내부 사진뿐이다. 대구 엑스코에서 했고, 내부 말고는 특별히 다른 점이 없어서 넘어가도 괜찮을 거 같다. 우리는 청년 리그 로봇/레고 분야에 참가했다. 타이틀은 '레고 에듀케이션 미션 마스 로봇 챌린지'였다. 쉽게 말하면 화성에 로봇을 보내서 8가지의 미션을 클리어하는 미션이다. 12팀 정도 참가를 했고, 팀원은 1~3인이다. 우리도 3인으로 제출했는데, '이'가 당일 늦잠을 잤는지 연락을 안 받았고, '남'과 ..

대외활동 2022.11.06

[Programmers] level3 - 징검다리 건너기 (Python) : 2019 카카오 테크 인턴십

▶징검다리 건너기 - 2019 카카오 테크 인턴십 (level 3) ▶문제 [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 카카오 초등학교의 "니니즈 친구들"이 "라이언" 선생님과 함께 가을 소풍을 가는 중에 징검다리가 있는 개울을 만나서 건너편으로 건너려고 합니다. "라이언" 선생님은 "니니즈 친구들"이 무사히 징검다리를 건널 수 있도록 다음과 같이 규칙을 만들었습니다. 징검다리는 일렬로 놓여 있고 각 징검다리의 디딤돌에는 모두 숫자가 적혀 있으며 디딤돌의 숫자는 한 번 밟을 때마다 1씩 줄어듭니다. 디딤돌의 숫자가 0이 되면 더 이상 밟을 수 없으며 이때는 그다음 디딤돌로 한 번에 여러 칸을 건너뛸 수 있습니다. 단, 다음으로 밟을 수 있는 디딤돌이 여러 개인 경우 무조건 가장 가..

[Programmers] level2 - 튜플 (Python) : 2019 카카오 테크 인턴십

▶튜플 - 2019 카카오 테크 인턴십 (level 2) ▶문제 셀 수 있는 수량의 순서 있는 열거 또는 어떤 순서를 따르는 요소들의 모음을 튜플(tuple)이라고 합니다. n개의 요소를 가진 튜플을 n-튜플(n-tuple)이라고 하며, 다음과 같이 표현할 수 있습니다. (a1, a2, a3,..., an) 튜플은 다음과 같은 성질을 가지고 있습니다. 중복된 원소가 있을 수 있습니다. ex : (2, 3, 1, 2) 원소에 정해진 순서가 있으며, 원소의 순서가 다르면 서로 다른 튜플입니다. ex : (1, 2, 3) ≠ (1, 3, 2) 튜플의 원소 개수는 유한합니다. 원소의 개수가 n개이고, 중복되는 원소가 없는 튜플 (a1, a2, a3,..., an)이 주어질 때(단, a1, a2,..., an은 ..

[Programmers] level1 - 크레인 인형뽑기 게임 (Python) : 2019 카카오 테크 인턴십

▶크레인 인형뽑기 게임 - 2019 카카오 테크 인턴십 (level 1) ▶문제 게임 개발자인 "죠르디"는 크레인 인형 뽑기 기계를 모바일 게임으로 만들려고 합니다. "죠르디"는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. 게임 화면은 "1 x 1" 크기의 칸들로 이루어진 "N x N" 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 "5 x 5" 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 "1 x 1" 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인..

'개발자 직군'에 대해서 - 어떤 개발자가 되고싶은가?

이번에는 개발자 직군에 대해서 글을 써보려고 한다. 자기 진로를 정한 학부생도 있을 수도 있고, 나처럼 정하지 못한 학부생도 있을 것이다. 나는 18학번으로 컴퓨터학부 입학한 지 5년 차지만, 아직도 진로를 정하지 못했다. 1학년 때는 개발자가 되어야지 하는 막연한 생각뿐이었다. 2학년이 되고서 개발자도 여러 직군이 있구나라는 것을 알게 되었고, 3학년인 지금, 아직도 나는 무슨 개발자가 되고 싶은지 정하지 못했다. 교수님과 상담도 해보고, cj에서 하는 remote internship에도 참여해보고 있다. 교수님은 내가 수학을 잘하는 것을 이용해 데이터 분석으로 가보는 건 어떻냐고 하셨고, 때마침 cj에서 하는 것도 데이터 분석으로 프로젝트를 진행 중이다. 그래서 그런지 나는 갑자기 데이터 분석으로 진..

이모저모/IT 2022.10.26

[알고리즘2] Slider Puzzle 구현 with PQ - 실습

복습하기 위해 학부 수업 내용을 필기한 내용입니다. 이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다. 그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다. import copy import random from queue import PriorityQueue class Board: def __init__(self, tiles): self.n = len(tiles) self.tiles = copy.deepcopy(tiles) self.twinBoard = None # Compute Hamming distance self.hammingDistance = 0 goal = 0 for rowId, row in enumerate(tiles): for colId, t in enumerate(r..

'애플 페이' - 현대 카드와 손잡고 국내 도입

지난 카카오 장애에 대해서 글을 쓰고, 두 번째 글을 써보려고 한다. 이번에는 애플 페이(Apple Pay)에 대해서 글을 써보려고 한다. 많은 애플 유저들이 애플 페이에 대해서 관심을 가지고 있다. 나 또한 삼성폰을 사용하다가 아이폰으로 넘어오고 나서, 삼성 페이를 사용 못하는 부분이 불편했었다. 애플을 사용한 지 5년이 되었고, 애플 페이를 계속해서 원해왔었다. 하지만, 이번엔 도입한다는 말이 매년 나왔지만, 말뿐이었다. "도대체 한국은 왜 안 해주는 거야" 하는 생각이 가득 차있었는데, 드디어 이번에 도입된다고 한다. 이미 많은 블로거들이 애플 페이와 관련해서 글을 썼을 것이다. 살짝만 구글링 해도 정보들이 넘쳐나고 있다. 늦었지만, 나는 그냥 내 생각을 써보고, 그리고 글쓰기 연습한다는 생각으로 ..

이모저모/IT 2022.10.21

[알고리즘2] Priority Queue

복습하기 위해 학부 수업 내용을 필기한 내용입니다. 이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다. 그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다. ▶Contents Binary Heap을 사용한 PQ의 구현 Priority Queue 사용 애플리케이션 공통적인 특성 Slider Puzzle and A* Search with PQ ▶Priority Queue insert() 1. complete binary tree 형태를 유지한다. 2. heap order를 유지한다. 3. ~logN 시간에 새 원소를 추가한다. insert(k)하는 새 값을 k라고 할 때, k를 tree 가장 마지막에(배열 끝에) 추가한다. k를 부모 노드와 비교해 heap-order(부모 >= 자식) ..

[알고리즘2] Collinear Point 구현 - 실습

복습하기 위해 학부 수업 내용을 필기한 내용입니다. 이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다. 그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다. ▶Collinear Points 4개 이상 점 연결하는 maximal한 직선을 모두 찾는 코드이다. N개 점의 (x, y) 좌표가 입력으로 주어졌을 때, 4개 이상 점을 연결하는 maximal한 직선을 모두 찾으면 된다. ▶Collinear Points 탐지방법 하나하나 비교하면서 하는 Brute Force방식을 사용할 수 있다. 하지만 시간 복잡도 측면에서 좋지 못한 코드가 된다. 정렬을 활용한 더 효율적인 방법을 사용하면 된다. 각 점 p에 대해, p가 다른 모든 점과 이루는 기울기를 계산해, 기울기를 key로 정렬한다. 정..

[알고리즘2] Sorting (Merge Sort, Quick Sort)

복습하기 위해 학부 수업 내용을 필기한 내용입니다. 이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다. 그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다. ▶Contents Bottom-up Merge Sort Sorting Complexity Stability of Sorting Quick Select Duplicate Keys and 3-way Partitioning ▶Merge Sort 인접한 두 조각끼리 Merge(정렬된 순서로 병합)을 반복한다. 총 N개 원소를 병합한다면, 이들을 순서에 맞게 차례로 결과 배열에 옮겨 담으므로 ~N회 작업이 필요하다. 이러한 작업을 ~log(N)회 반복해야 한다. 입력 데이터 크기가 N이라면 결과를 옮겨 담을 ~N의 추가 공간도 필요하다...

[수치해석] Ch6. Open Method

복습하기 위해 학부 수업 내용을 필기한 내용입니다. 이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다. 그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다. ▶Open Method bracketing method (아래 그림 6.1a) bracketing method와 다르게, open method는 x 하나만 있거나 또는 반드시 근을 괄호로 묶지 않는 두 개의 시작 값만 필요한 공식을 기반으로 한다. 때때로 계산이 진행됨에 따라 근으로부터 분리되거나 멀어진다(아래 그림 6.1b). 그러나, 개방형 방법들이 수렴될 때(아래 그림 6.1c), 그들은 보통 bracketing method보다 훨씬 더 빠르다. ▶Simple Fixed-Point Iteration f(x) = 0 → x ..

[수치해석] Ch5_2. Roots of Equations - False Position Method

복습하기 위해 학부 수업 내용을 필기한 내용입니다. 이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다. 그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다. ▶False-Position Method 비록 bisection이 근을 결정하는 데 완벽하게 유효한 기술이지만, "brute-force" 접근법은 상대적으로 비효율적이다. bisection의 단점은 xl에서 xu까지의 간격을 같은 반으로 나눌 때 f(xl)와 f(xu)의 크기를 고려하지 않는다는 것이다. 예를 들어, f(xl)가 f(xu)보다 0에 훨씬 가깝다면, 루트는 xu보다 xl에 더 가까울 가능성이 높다. step 1 근이 있다고 추측되는 lower xl과 upper xu를 범위로 지정한다. f(xl) * f(xu) < ..

[수치해석] Ch5_1. Roots of Equations - Bisection Method

복습하기 위해 학부 수업 내용을 필기한 내용입니다. 이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다. 그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다. ▶Roots of Equations 방정식의 근을 구하는 가장 심플한 방법 : Trial and Error (시행착오)-> 비효율적이고 엔지니어링 관행의 요구 사항에 적합하지 않다. 정의에 따르면, y = f(x)가 주어진 함수는 fi = i차 다항식 x인 형태로 표현될 수 있다면 algebraic이다.(algebraic function : 대수 함수) 다항식은 일반적으로 n = 다항식의 순서와 a의 = 상수로 표현되는 대수 함수의 단순한 클래스이다. 대수 함수 (algebraic function)f2(x) = 1 - 2.37x..

[데이터베이스] 관계형 해석

복습하기 위해 학부 수업 내용을 필기한 내용입니다. 이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다. 그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다. ▶관계형 해석 (Relational Calculus) 관계형 대수는 원하는 정보를 어떻게 유도하는 가를 기술하는 절차적이다. 관계형 해석은 원하는 정보가 무엇이라는 것만 선언하는 비절차적인 특성을 가지고 있다. 관계형 해석과 관계형 대수는 동등하다. 관계형 해석과 관계형 대수는 서로 변환 가능하다. 관계형 해석의 두 가지 표현 방법 튜플 관계형 해석 도메인 관계형 해석 ▶튜플 관계형 해석 (Tuple Relational Calculus) 튜플 해석식의 구성 요소 튜플 변수 또는 범위 변수 R(t) t는 R의 튜플 변수이고, 취하..

728x90