목록분류 전체보기 (279)
HwangHub
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 문제 해석 이 문제는 N x N 행렬 위에서 이동을 할 때, 지나온 숫자들의 합이 최대가 되는 경우의 그 총합을 구하는 문제이다. 1. 완전탐색으로 접근했을 때 가능한가? -> 일단 인접한 항으로 이동하면서 탐색하는 방법이므로 그래프 알고리즘을 적용해볼 수 있을 것 같다는 느낌은 들지만, 이 문제의 경우 오른쪽 또는 아래로 선택하여 이동 + 이 과정을 최악의 경우 2n-1번 반복하여 얻는 결과를 보여줘야 한다. 이 때, 시간복잡도를 보면 2^(2n-1)이 될 것이므로 n이 최대 100이니 2^199 만큼..
채팅을 구현할 때나 push 알림을 구현해야 할 때 자연스럽게 소켓 방식을 사용한다고 이해하고 있었는데, 여기서 소켓이라는 개념이 정확히 어떤 느낌인지 네트워크 전공수업을 들을 때에도 명확하게 이해하기가 어려웠다. 생각이 난 김에 공부하고, 이를 내 언어로 정리해 보았다. 웹 소켓은 오늘날 웹 환경에서 두 컴퓨터 간 통신을 하는 방식 중 양방향 통신을 구현할 수 있는 표준 기술이다. 그간 통신 방식을 훑어보면서 웹 소켓 방식에 대해 이해해보자. 단순 터미널 텍스트 통신 가장 원시적인 방법이자 통신의 시작 IP와 포트를 지정하여 특정 컴퓨터 간 터미널에서 텍스트를 주고받았던 방식 윈도우 기준 아래처럼 파워쉘에서 그냥 상대 ip 주소와 포트 번호를 지정하여 udp 또는 tcp로 텍스트를 통신하는 개념이라고 ..
나는 멋쟁이사자처럼 커뮤니티 개발 프로젝트에서 백엔드 리드를 맡아, 서버 리드와 함께 어플리케이션 설계에 대하여 같이 고민하였다. 우리는 이 프로젝트를 ver1.0으로 끝낼 생각이 없었고, 향후 계속 유지보수를 해야 하는 프로젝트로 계획하고 있었기에 유지보수성을 어떻게 가져갈지 고민하지 않을 수 없었다. 우리는 기획팀의 화면정의서를 바탕으로 요구사항을 정리하였고, 기본적으로 백오피스, 채팅, 그리고 클라이언트를 위한 API 서버를 구현해야 함을 이해했다. 이를 구현함에 있어서 각각의 서비스는 반드시 같은 버전으로 업데이트 될 필요가 없다. 다시 말해서, 백오피스 버전을 업그레이드 했다고 해서 클라이언트를 위한 API 코드들까지 전부 리빌드할 필요가 없다는 의미이다. 이처럼 빌드 종속성을 최대한 느슨하게 ..
곧 멋사 생활이 아예 마무리되는 시기가 오는데, 조금이라도 기억이 날 때 내게 큰 의미를 갖는 멋사 활동을 기록해두고자 한다. 다 지난 이후에 쓰는 회고록이기 때문에 기억이 안나는것도 많아서 간략하게 적어볼까 한다. 2022년, 나는 멋쟁이사자처럼대학 항공대 10기 아기사자였다.2022년 2월, 재료에 따라서도 결과물의 품질이 천차만별로 달라지는 하드웨어 기술과 달리, 개인의 역량이 아웃풋의 퀄리티에 더욱 영향력을 갖고 있는 소프트웨어 기술에 대한 호기심이 막 생길 무렵이었다. 고등학교 친구와 이야기를 하던 중 우연히 "멋쟁이사자처럼"이라는 동아리에 대해 알게 되었다. 어찌보면 동아리에 불과한 이 집단이 중앙 법인도 가지고 있고, 많은 이들이 이러한 커뮤니티를 거쳐 필드로 나아간다는 말을 듣고 처음에는 ..
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 문제 해석 이 문제도 전형적인 타일 깔기 문제라서 DP로 풀 수 있으며, 이는 매우매우 간단한 점화식으로 표현할 수 있다. 문제 조건에 등장하는 타일을 가지고 n의 길이를 가진 사각형을 채우는 경우의 수는 아래와 같이 점화식을 세울 수 있다. f(n) = f(n-1) + 2 * f(n-2) 이를 참고하여 타뷸레이션 방식으로 DP 로직을 구성하면 아래와 같다. 문제 풀이 package 코드트리.DP; import java.io.BufferedReader; import java.io.IOException; ..
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 문제 해석 이 문제는 지난번에 풀었던 "사각형 채우기"와 같은 유형의 문제로써, 점화식을 세울 때 조금 더 생각을 해줘야 하는 문제이다. 기본적으로 n번째 자리까지 타일을 까는 경우의 수는 n-1, n-2 번째까지의 타일을 까는 경우의 수 들을 이용하여 도출해낼 수 있다는 아이디어가 DP의 기본 흐름이다.(큰 문제는 작은 문제로 쪼개어 생각한다.) 이렇게 볼 때, 1칸짜리 그리고 2칸짜리를 이용하여 f(n) = 2 * f(n-1) + 3 * f(n-2) 까지는 쉽게 구해질 것이다. 이게 만약 안보인다면 ..
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 문제 해석 계단 오르기와 동일한 전형적인 DP 패턴 한 번에 1칸 오르냐 2칸 오르냐 하는 것 n번째의 경우의 수를 구하는 것이니까 f(n) = f(n-1) + f(n-2); 문제 풀이 public class 사각형_채우기 { public static void main(String[] args) throws IOException { int[] dp = new int[1001]; dp[0] = 0; dp[1] = 1; dp[2] = 2; for (int i = 3; i
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 문제 해석 1. n층 높이의 계단을 오르는 경우의 수를 구하는 문제이다. -> 여기까지만 보면 아직은 어떤 알고리즘을 쓸지 확신하기 어렵다. 2. 2개 또는 3개 계단 단위로만 오를 수 있다고 한다. -> 일정 패턴으로만 진행되는 것을 알 수 있다. 이렇게 정형화된 패턴을 배치하는 경우의 수를 구하는 문제는 다이나믹 프로그래밍의 가장 대표적인 유형이다. 문제에서 요구하는 답은 n개의 계단을 오르는 경우의 수 이므로 f(n) = n번째 계단을 오르는 경우의 수 일 것이다. n번째 계단은 n-2번째 계단 또..
문제는 비공개이기 때문에 첨부하지 않겠다. 문제 해석 이 문제는 체스 나이트의 이동 패턴을 이용하여 나이트가 어디어디 갈 수 있는지 파악하는 문제였다. 2차원 격자 위에서 움직이는 패턴이 일정하므로 인접한 좌표로 이동할 수 있는 그래프 탐색 알고리즘을 사용하면 될 것이라고 생각했고, 전체를 탐색해야 하는 것이지 최단거리를 알아낼 필요는 없으므로 상대적으로 구현이 더 단순한 DFS를 사용하는 것이 효율적일 것이라고 판단하였다. 문제에서 요구하는 출력 결과는 visited 배열값을 이용하면 파악할 수 있을 것이라고 판단하였다. 문제 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; imp..
보호되어 있는 글입니다.