연구 과정에서 리눅스 커널과 관련된 소스코드들을 분석하고, 구현하고자 하는 것을 리눅스 커널에 구현할 수 있는 역량을 갖추게 되었다. 기업들을 지원하고자 하니, 내가 가진 역량을 그대로 살릴 수 있는 직무는 잘 없었다. 졸업 논문이 커널에서 컨테이너와 관련된 부분이 일부분 있어, 상반기에는 이를 토대로 클라우드와 관련된 직무들을 많이 지원하였다. 하지만 수많은 서류 탈락을 맞이하고, 면접을 가더라도 1차 면접을 넘지 못하였다. 이에 리눅스 커널/드라이버를 개발할 수 있는 직무를 찾다 보니 안랩이라는 기업을 지원하게 되었다. 궁금해하시는 사항들에 대해 해당 글은 제가 2020년 하반기에 안랩에 신입 사원으로 입사하기 위한 과정을 회고한 것입니다. 어떤 방식으로 채용이 진행되는지 궁금하시다면 해당 회고록을 ..
문제 코딩테스트 연습 기초부터 차근차근, 직접 코드를 작성해 보세요. programmers.co.kr 문제 풀이 필드의 값 별로 묶어서 조회하고자 하는 경우 `GROUP BY`를 사용한다. 각 문제들은 `GROUP BY`를 통해 조회하고자 하는 데이터를 조회하는 문제들이다. 코드 고양이와 개는 몇 마리 있을까 SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) AS COUNT FROM ANIMAL_INS GROUP BY ANIMAL_TYPE ORDER BY ANIMAL_TYPE `GROUP BY`를 통해 `ANIMAL_TYPE`으로 그룹을 만들면, 동물 별로 카운트할 수 있다. 동명 동물 수 찾기 SELECT NAME, Count(*) AS COUNT FROM ANIMAL_INS WHE..
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 문제에서는 특정 조건이 일치하는지 확인하여 만족하는 값들만 반환하는 문제가 나온다. 이를 위해 필드 값을 확인하여야 한다. 필드의 값들을 확인하기 위해서는 `IN`, `LIKE`와 `REGEXP`를 활용하면 원하는 결과를 가져올 수 있다. 코드 루시와 엘라 찾기 SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE FROM ANIMAL_INS WHERE NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty') `Pyth..
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 각 문제에서는 `ANIMAL_INS`, `ANIMAL_OUT`와 같이 동물이 보호소에 들어온 정보에 대한 테이블과 보호소에서 나간 경우에 대한 정보를 가진 테이블이 주어진다. 이때 문제에서는 `JOIN`을 통해 두 가지 테이블을 함께 조회하여 원하는 결과를 찾는 문제가 출제된다. `JOIN`을 이해하고, `ON`, `WHERE`를 적절히 이용하면 문제를 쉽게 해결할 수 있다. 코드 없어진 기록 찾기 SELECT OUTS.ANIMAL_ID, OUTS.NAME FROM ANIMAL_OUTS OUT..
문제 14426번: 접두사 찾기 문자열 S의 접두사란 S의 가장 앞에서부터 부분 문자열을 의미한다. 예를 들어, S = "codeplus"의 접두사는 "code", "co", "codepl", "codeplus"가 있고, "plus", "s", "cude", "crud"는 접두사가 아니다. 총 N개의 문자 www.acmicpc.net 문제 풀이 M개의 문자들 중 N개의 문자의 접미사가 하나라도 되는지 확인하는 문제이다. 접미사 이므로 찾고자 하는 패턴의 수와 N개의 문자 중 일치하는지 확인하면 쉽게 해결할 수 있다. 코드 split을 활용한 풀이 from sys import stdin if __name__ == '__main__': n, m = map(int, stdin.readline().split()..
문제 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어 www.acmicpc.net 문제 풀이 N개에 문자열로 이루어진 집합 S가 있을 때, M개에 문자열 중 집합 S에 포함되는 문자가 총 몇 개인지 구하는 문제이다. 문제를 풀기 위해서는 `딕셔너리`와 `in`을 활용하면 쉽게 풀 수 있다. M개의 문자열 중, N에 포함되는지 확인하기 위해서는 `if pattern in strings`와 같이 확인하면 된다. 파이썬의 `in` 연산은 리스트의 경우 `O(N)`의 시간이 소요되지만 딕셔너리의 경우 `O(1)`의..
문제 1305번: 광고 첫째 줄에 광고판의 크기 L이 주어지고, 둘째 줄에 현재 광고판에 보이는 문자열이 주어진다. L은 백만보다 작거나 같은 자연수이다. www.acmicpc.net 문제 풀이 전광판에 N개의 문자열을 광고를 표시한다. 이때 시간이 지남에 따라 문자열은 한 칸씩 옆으로 이동한다. 어느 순간 광고판을 볼 때, 쓰여 있는 문자가 입력으로 주어진다면 가능한 광고의 길이 중 가장 짧은 것을 출력하는 문제이다. 이는 `KMP 알고리즘`에서 접미사와 접두사가 되는 문자열의 최대 길이를 생성하면 쉽게 해결할 수 있는 문제이다. 만약 `KMP 알고리즘`에 대해 이해하고 있지 않다면 문제를 풀 수 없다. 코드 def make_table(patten): table = [0] * l j = 0 for i ..
문제 코딩테스트 연습 - 줄 서는 방법 n명의 사람이 일렬로 줄을 서고 있습니다. n명의 사람들에게는 각각 1번부터 n번까지 번호가 매겨져 있습니다. n명이 사람을 줄을 서는 방법은 여러가지 방법이 있습니다. 예를 들어서 3명의 사람 programmers.co.kr 문제 풀이 처음 문제를 접하였을 때는 `DFS`를 통해 각 경우의 수를 구하고 `K`인 경우를 반환하면 되지 않을까 생각했다. 하지만 이 방식은 `N`이 20이므로 시간 초과가 발생한다. 따라서 `K`인 경우를 바로 구할 수 있는 방법을 통해 풀어야 시간 초과가 발생하지 않는다. 즉, 이 문제는 단순히 `DFS`를 통해 조합을 구할 수 있는가?를 묻는 문제가 아닌 팩토리얼 성질을 통해 효율적으로 K인 경우의 조합을 찾을 수 있는가?를 묻는 문..