전체 글 140

SSR과 CSR

SSR SSR(Server Side Rendering)은 Javascript 가 웹 페이지를 브라우저에서 렌더링하는 대신에, 서버에서 렌더링한다. 브라우저가 서버의 URI로 GET 요청을 보내면, 서버는 정해진 웹 페이지 파일을 브라우저로 전송한다. 그리고 서버의 웹 페이지가 브라우저에 도착하면 완전히 렌더링된다. 서버에서 웹 페이지를 브라우저로 보내기 전에, 서버에서 완전히 렌더링했기 때문에 Server Side Rendering 이라고 한다. 웹 페이지의 내용에 데이터베이스의 데이터가 필요한 경우, 서버는 데이터베이스의 데이터를 불러온 다음 웹 페이지를 완전히 렌더링 된 페이지로 변환한 후에 브라우저에 응답으로 보낸다. 웹 페이지를 살펴보던 사용자가, 브라우저의 다른 경로로 이동하면 서버는 이 작업을..

웹 애플리케이션

웹 애플리케이션은 아래와 같은 특징이 있다. 데스크탑 애플리케이션처럼 상호작용 가능하다. 특정 기능을 가지고 있다(정보 검색 등). 정보나 자료 등의 콘텐츠 관리 시스템과 함께 작동한다. 웹 개발 영역에서 website라고 하면 일반적으로 정적 페이지들의 집합체를 의미한다. 예를 들면 뉴스 사이트와 같이 고정된 정보를 제공하지만 사용자가 해당 사이트에 어떠한 것도 관여 하지 못하는 사이트이다. 웹사이트가 정적 페이지들 뿐 아니라 동적 페이지, 즉, 사용자와 상호작용을 포함하게 된다면 이미 web application 이 되게 된다. 예를 들면 메일, 인터넷 게시판, 블로그 SNS 등이 있다. 웹 애플리케이션은 인터넷에 공개되는 순간부터 글로벌 네트워크의 막대한 트래픽에 노출 될 수 있기 때문에 아래와 같..

DNS

DNS (Domain Name System) 도메인 네임 시스템을 간단하게 설명하자면 사람이 기억하기 쉬운 `www.naver.com`과 같은 도메인을 컴퓨터가 이해할 수 있는 ‘125.209.222.142`으로 변환하여 요청이 원하는 곳에 도달할 수 있도록 도와주는 시스템이다. 위의 그림에서 host부분이 도메인 주소에 속하며 도메인 주소는 오른쪽부터 왼쪽으로 최상위(탑 레벨) 도메인과 여러 개의 도메인으로 구성되어 있다. 탑 레벨 도메인은 .com, .kr, .net 등 도메인의 가장 오른쪽에 위치하는 도메인이다. kr, us와 같은 국가 코드를 사용하는 도메인은 co, ac와 같은 2단계 도메인과 함께 사용되기도 한다. 서브도메인은 일반적으로 `www, m`와 같은 제일 왼쪽에 위치한 도메인들이 해..

Network (TCP/IP 4계층)

TCP/IP 서로 멀리 떨어진 다른 기기들이 정보를 주고 받는데 쓰이는 통신규약 중에 하나이며 현재 가장 많이 사용되고 있는 인터넷 프로토콜이다. 크게 네트워크 접근 계층, 인터넷 계층, 전송 계층, 응용 계층, 이렇게 4계층으로 이루어저 있다. 계층 주요 프로토콜 역할 4층 응용 계층 HTTP, DNS, FTP 어플리케이션에 맞추어 통신 3층 전송 계층 TCP, UDP IP와 어플리케이션을 중개하며 데이터를 전달 2층 인터넷 계층 IP, ICMP, ARP, RARP 네트워크 주소를 기반으로 데이터를 전송 1층 네트워크 접근 계층 Ethernet, Wifi 컴퓨터를 물리적으로 네트워크에 연결 여기에 많은 프로토콜들이 등장하는데 모두 어떠한 것의 특별한 규약이지만 서로 다른 계층에 있는 프로토콜들은 전혀 ..

DP를 이용한 경우의 수 찾기

문제 여러가지 지폐의 종류로 원하는 액수를 가저갈수 있는 모든 경우의 수를 구하라. 예를들어 $50, $20, $10 3가지의 지폐종류가 있고 총 50 달러를 가저가려할때 가질수 있는 모든 경우의 수인 4를 구해 반환해야 한다. $50 * 1 $20 * 2, $10 * 1 $20 * 1, $10 * 3 $10 * 5 입력 int 타입의 자연수 int target int 타입의 요소를 갖는 배열 int[] type 출력 long 타입의 모든 경우의 수 풀이 재귀 class Solution { public long ocean(int target, int[] type) { int[] newType = IntStream.of(type).boxed().sorted(Collections.reverseOrder())..

동적 계획법(Dynamic Programming, DP)

재귀를 이용하여 코딩테스트를 하던도중 계속해서 실행시간 초과로 실패하였는데 알고보니 DP라는 것을 이용해야 하는 문제 였다. 동적 계획법 (DP) 최소의 단위로 문제를 쪼개어 연산한 뒤 배열에 저장하고 그 값들을 계속해서 이용하여 연산 후 배열에 저장, 결국엔 최종 값까지 도달하는 알고리즘 설계 기법이다. 간단히 말해 최소 단위의 문제를 푼뒤 그 값들을 계속해서 재활용하여 최후의 값을 구하는 방식이다. DP의 특징 DP를 사용할때 문제를 최소단위에서부터 연산을 시작하여 나온 값을 이용해 연속적으로 연산을 하게되는데 이는 재귀 구조와 매우 비슷하다. 이렇게 답을 구하기 위해서 했던 계산을 또 하고 또 하고 계속해야 하는 종류의 문제의 구조를 최적 부분 구조(OPtimal Substructure)라 부르며 ..

아이소그램(isogram), 중복된 문자 검열

이번 테스트는 상당히 쉬운 코딩테스트이지만 정답과 비교했을때 코드의 성능에 큰 차이가 있어 포스트하기로 했다. 문제는 상당히 간단하다. 문자열을 입력받아 중복된 문자가 있는지 없는지를 boolean 타입으로 반환하면 된다. 직접 작성한 코드 public class Solution { public boolean isIsogram(String str) { public boolean isIsogram (String str){ String[] arr = str.toLowerCase().split(""); for (int i = 0; i < arr.length; i++) { for (int j = i + 1; j < arr.length - 1; j++) { if (arr[i].equals(arr[j])) retu..

부분수열이 중복되지 않는 특정한 문자열 생성

문제 1, 2, 3으로만 이루어진 수열 바코드를 만들어야 하며 바코드에서 인접한 두 개의 부분 수열이 동일하다면 제작할 수 없다고 할 때, 주어진 길이 len의 바코드 중 가장 작은 수를 반환하는 함수를 작성. 만들 수 없는 바코드 만들 수 있는 바코드 112 1312 1231312 3 232312 231213 부분 수열? 주어진 수열에서 연속된 모든 구간을 말합니다. 수열 123의 부분 수열은 1, 2, 3, 12, 23, 123. 인접한 두 부분 수열? 첫번째 부분 수열과 두번째 부분 수열이 연속된 경우. 수열 1234에서 인접한 부분 수열 (우리는 두 부분수열이 같은지 관심이 있으므로 길이가 서로 다른 경우는 무시한다) 1과 2, 2와 3, 3과 4, 12와 34 만들 수 없는 바코드: '11'2 ..

간선 리스트로 연결된 정점의 그룹들의 수 찾기

문제 방향이 없는 간선들의 목록이 주어질 때, 연결된 정점의 컴포넌트(그룹들)가 몇 개인지 반환하는 함수를 작성하세요. 입력값 2차 배열 정수요소 ex) int[][]{{0,1}, {2,3}, {3,4}} 출력값 int 타입의 정점들이 연결된 그룹들의 수. 입출력 및 그래프 예시 int result = connectedVertices(new int[][]{ {0, 1}, {2, 3}, {4, 5}, }); System.out.println(result); // 3 풀이 1 - DFS와 정점리스트 사용 class Solution { //DFS public int connectedVertices(int[][] edges) { int count = 0; // 재귀를돌며 정점들의 그룹의 수를 카운트업 하여 마지..