라인플러스 1차 면접 후기 2022 상반기 라인플러스 공채 필기테스트를 합격하고 1차 면접을 보게 되었다. 1차 면접 일정은 4월 18일(월) ~ 5월 2일(월) 기간 중 하루에 약 1시간가량 면접을 보게 된다. 나는 운이 안 좋게도(?) 4월 18일 첫째 날에 면접을 보게 되었다 ㅠㅠ 아무래도 가장 먼저 면접을 보기 때문에 다른 지원자들에 비해 준비할 시간이 매우 촉박했다. 면접 준비는 CS 기초 지식들 복습, 예상 질문 연습, 스프링 및 JPA 기술 복습 등을 했다. 실제 면접 날 ZOOM을 이용하여 면접을 진행했다. 면접관은 총 3분이 들어오시고, 3대 1 면접을 진행하게 된다. 나는 Media Service Server Engineer 직무를 선택했는데, 해당 부서의 실무진 분들이 들어오셨다. 면..
라인 필기테스트 후기 2022 상반기 라인플러스 공채에서 코딩 테스트를 합격하고 필기테스트를 보게 되었다. 코딩 테스트에 이어 필기테스트까지 준비하느라 조금 힘들었지만 그래도 열심히 준비했다! 필기테스트에서 나온 문제에 대해서는 규약 때문에 말해줄 순 없지만 대충 자료구조, 알고리즘, 네트워크, DB, 운영체제, 컴퓨터 구조, 프로그래밍 언어 등 CS 기초 지식들에 대해서 물어보는 시험이였다. 필기테스트 준비는 학부 시절 공부했던 PPT 자료들과 전공 서적들, 그리고 내가 정리한 블로그 글들을 위주로 공부하였다. 필기테스트는 4월 2일(토) 오전 10시 ~ 오전 11시 30분까지 총 1시간 30분을 보았다. 인터넷 검색이나 자료를 참고할 수 없다. 화상 감독을 실시한 상태로 시험을 보게 된다. 난이도는 ..
문제 https://www.acmicpc.net/problem/16500 16500번: 문자열 판별 첫째 줄에 길이가 100이하인 문자열 S가 주어진다. 둘째 줄에는 A에 포함된 문자열의 개수 N(1 ≤ N ≤ 100)이 주어진다. 셋째 줄부터 N개의 줄에는 A에 포함된 단어가 한 줄에 하나씩 주어진다. A에 www.acmicpc.net 풀이 이 문제는 아래와 같이 DP를 사용하여 해결할 수 있다. 1. A에 있는 문자열을 HashSet 자료구조에 모두 저장한다. 2. S의 뒷자리부터 0까지 순서대로 문자열을 substring으로 잘라 A에 속해있는지 확인한다. ex) t, st, est, test, ntest, ontest, contest ..... 3. 만약 substring이 A에 속해있다면 해당 ..
MVC 패턴의 등장 배경 하나의 서블릿 혹은 JSP만으로 비즈니스 로직과 뷰 렌더링까지 모두 처리한다면, 너무 많은 역할을 하게 되어 유지보수가 어렵다. 또한, UI를 일부 수정하는 일과 비즈니스 로직을 수정하는 일은 변경 시점이 다를 가능성이 매우 높다. 따라서 변경의 라이프 사이클이 다른 부분을 하나의 코드로 관리하는 것은 유지보수하기 좋지 않다. 특히, JSP 같은 뷰 템플릿은 화면을 렌더링 하는데 최적화 되어 있기 때문에 이 부분의 업무만 담당하는 것이 좋다. MVC 패턴을 사용하면 JSP나 서블릿으로 처리하던 것을 컨트롤러,모델,뷰라는 영역으로 서로 역할을 나눠 처리할 수 있다. 참고 : [Web] 서블릿(Servlet)이란? 서블릿 컨테이너란? [Web] 서블릿(Servlet)이란? 서블릿 컨..
문제 https://programmers.co.kr/learn/courses/30/lessons/92344 코딩테스트 연습 - 파괴되지 않은 건물 [[5,5,5,5,5],[5,5,5,5,5],[5,5,5,5,5],[5,5,5,5,5]] [[1,0,0,3,4,4],[1,2,0,2,3,2],[2,1,0,3,1,2],[1,0,1,3,3,1]] 10 [[1,2,3],[4,5,6],[7,8,9]] [[1,1,1,2,2,4],[1,0,0,1,1,2],[2,2,0,2,0,100]] 6 programmers.co.kr 풀이 이 문제는 정말 재밌는 문제였다. 문제에 나온대로 그냥 덧셈을 모두 하게 되면 시간초과가 발생할 수 밖에 없다. N*M배열에 K개의 명령이 있을 때 O(KNM)이라는 시간복잡도가 발생하기 때문이다...
문제 https://www.acmicpc.net/problem/1941 1941번: 소문난 칠공주 총 25명의 여학생들로 이루어진 여학생반은 5×5의 정사각형 격자 형태로 자리가 배치되었고, 얼마 지나지 않아 이다솜과 임도연이라는 두 학생이 두각을 나타내며 다른 학생들을 휘어잡기 시작 www.acmicpc.net 풀이 이 문제는 단순히 BFS, DFS를 사용하면 해결하기 매우 힘들다. 모든 자리에서 4방향을 모두 조사하는 식으로 탐색하면 경우의 수가 너무 많아 시간 초과가 발생한다. 따라서 조합을 사용하여 해결하는 편이 좋다. 25개의 자리 중 7개를 선택하는 경우의 수는 25C7 = 480700 으로 작은 편이다. 1. 25개의 자리 중 7개를 뽑는다. 2. 해당 7개의 자리가 모두 상하좌우로 연결되어..
B- 트리란?보통 B 트리라고 하면 B- 트리를 의미한다. B 트리는 트리 자료구조의 일종으로 이진트리를 확장해 하나의 노드가 가질 수 있는 자식 노드의 최대 숫자가 2보다 큰 트리 구조이다. 이러한 B 트리의 다음과 같은 특징을 그림과 함께 알아보자. 1. 노드에는 2개 이상의 데이터(key)가 들어갈 수 있으며, 항상 정렬된 상태로 저장된다. [그림 1]처럼 한 노드에 2개, 3개의 데이터가 들어가 있을 수 있으며, 항상 정렬된 상태로 저장된다. 2. 내부 노드는 ceil(M/2) ~ M개의 자식을 가질 수 있다. 최대 M개의 자식을 가질 수 있는 B 트리를 M차 B트리라고 한다. [그림 1]은 3차 B트리를 나타낸다. ceil() 함수는 올림 함수를 뜻한다. 즉, ceil(3/2) = 2이다..
문제 https://www.acmicpc.net/problem/1522 1522번: 문자열 교환 a와 b로만 이루어진 문자열이 주어질 때, a를 모두 연속으로 만들기 위해서 필요한 교환의 회수를 최소로 하는 프로그램을 작성하시오. 이 문자열은 원형이기 때문에, 처음과 끝은 서로 인접해 www.acmicpc.net 풀이 이 문제는 아이디어가 매우 중요하다. 알고리즘 분류에 슬라이딩 윈도우로 표시되어 있는 것을 보고 힌트를 얻었다. a가 연속적이여야 한다는 말은 a가 a의 개수 만큼 연속적으로 위치해야 한다는 뜻이다. 예를 들어, "ababa" 라는 문자열이 있다면, a가 3개이므로 "aaabb", "baaab", "bbaaa".... 등 a가 3개 연속적으로 위치해야한다. 따라서, 인덱스 0 부터 끝까지 ..
문제 https://www.acmicpc.net/problem/20056 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net 풀이 코드를 짜는 것보다 예외를 처리하는게 훨씬 어려웠던 문제였다. 우선 다음과 같은 Fireball 클래스를 만들었다. public static class Fireball{ int r;// 행 int c;// 열 int m;// 질량 int s;// 속력 int d;// 방향 Fireball(int r,int c,int m, int s,int d){ ..
얼마전에 유튜브에서 재밌는 C-code를 보게 되었다. https://youtu.be/DEqXNfs_HhY Donut-shaped C code 별로 쓸데는 없지만 재밌어 보여서 나도 구현해보고 싶어졌다. 하지만 구글에 Donut-shaped C code를 검색해봐도 제대로 된 코드를 찾기가 쉽지 않았다. 겨우 찾은 코드에서 몇가지 오류가 나는 것을 해결해서 완성한 코드는 다음과 같다. #include #include #include #include int main(){ int k; float A=0, B=0, i, j, z[1760]; char b[1760]; printf("\x1b[2J"); for(; ; ) { memset(b,32,1760); memset(z,0,7040); for(j=0; 6.28..
프록시(Proxy)란? 프록시는 두 호스트가 통신할 때 서로 직접 통신하지 않고 중간에서 대리로 통신을 하도록 도와주는 것을 프록시(Proxy)라고 한다. 이러한 중계 역할을 하는 서버를 프록시 서버라고 부른다. 즉, 프록시 서버는 클라이언트와 서버 사이의 중계서버로서의 역할을 한다. 이러한 프록시 서버가 클라이언트와 서버 중간에 위치하면서, 클라이언트는 프록시서버를 서버로 인식하고 서버는 프록시 서버를 클라이언트로 인식하게 된다. 프록시서버는 위치에 따라 포워드 프록시(Forward Proxy)와 리버스 프록시(Reverse Proxy)로 나뉜다. 포워드 프록시(Forward Proxy)란? 포워드 프록시는 일반적으로 프록시, 프록시 서버 혹은 웹 프록시라고 불린다. 포워드 프록시는 클라이언트들 앞에 ..
문제 https://www.acmicpc.net/problem/2210 2210번: 숫자판 점프 111111, 111112, 111121, 111211, 111212, 112111, 112121, 121111, 121112, 121211, 121212, 211111, 211121, 212111, 212121 이 가능한 경우들이다. www.acmicpc.net 풀이 이 문제는 간단한 BFS 문제이다. 다만 일반적인 BFS와 달리 방문 여부를 체크하지 않는다. 대신 6개의 숫자를 택하면 더 이상 탐색을 진행하면 안 되는 식으로 구현하면 된다. 나는 다음과 같은 Node 클래스를 만들어서 큐의 원소로 사용했다. public static class Node{ int x; int y; String str; Nod..