전체 글 481

[네트워크] 서버의 부하를 분산하는 방법

클라이언트의 요청이 많을수록 웹 서버의 부하가 높아지게된다. 이때 웹 서버가 어떻게 부하를 분산하는지 알아보자. 서버의 부하 분산 서버의 부하를 분산하기 위해 3대의 웹 서버를 사용한다고 해보자. 그렇다면 각각의 서버가 담당하는 패킷의 수가 감소할 것이다. 하지만 1대의 웹 서버가 동작하지 못하는 상황이 온다면 클라이언트들은 이러한 상황을 모르고 계속해서 액세스할 것이기 때문에 비효율적이다. 로드 밸런서 이때 웹 서버와 클라이언트 사이에 로드 밸런서를 둘 수 있다. 로드 밸런서는 클라이언트의 요청을 대신 받아 서버에 전달하는 역할을 하는데 DNS 서버에 로드 밸런서의 주소를 등록하여 사용한다. 따라서 클라이언트는 웹 서버가 아닌 로드 밸런서에 요청을 하고 로드 밸런서는 웹 서버에서 받은 요청을 클라이언트..

CS/네트워크 2021.07.20

[백준 15683] 감시

https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net 접근 이 문제는 CCTV의 방향을 어떻게 설정할 것인지가 관건이었다. 각각의 CCTV에 따라 감시할 수 있는 방향을 딕셔너리 형태로 선언해주었다. 이후 CCTV의 개수만큼 DFS를 하여 해당 CCTV를 감시할 수 있는 방향을 모두 탐색할 수 있도록하였다. 결론적으로 CCTV의 방향을 어떻게 모델링할 것인지와 DFS를 통한 완전탐색으로 접근하였다. 구현 - CCTV의 위치와 번호를 cct..

[JS] 함수

자바스크립트에서 함수를 정의하는 방법에는 4가지가 있다. 정의하는 방법에 따라 함수의 특징도 다르기 때문에 확실히 이해하고 넘어갈 필요가 있다. 또한 자바스크립트에서 함수는 일급객체로서 어떠한 성질을 갖고있는지 알아본다. 함수의 기본 형태 아래의 코드는 두 개의 숫자를 인자로 받은 후에 두 수를 더한 값을 반환하는 함수이다. 먼저 함수의 이름은 "my_sum"이며 이 함수의 매개변수는 "a", "b"로 2개가 존재하며 중괄호 내의 함수 몸체에서 a+b를 반환하고 있다. 정의된 함수를 사용하기 위해서 함수 호출을 하고있으며 정수 3과 5를 인자로 전달하고 있다. function my_sum(a, b) { return a+b; } my_sum(3, 5); 위의 코드처럼 함수는 함수 이름, 매개변수, 반환값 ..

[백준 15961] 회전초밥

문제 회전 초밥 음식점에는 회전하는 벨트 위에 여러 가지 종류의 초밥이 접시에 담겨 놓여 있고, 손님은 이 중에서 자기가 좋아하는 초밥을 골라서 먹는다. 초밥의 종류를 번호로 표현할 때, 다음 그림은 회전 초밥 음식점의 벨트 상태의 예를 보여주고 있다. 벨트 위에는 같은 종류의 초밥이 둘 이상 있을 수 있다. 새로 문을 연 회전 초밥 음식점이 불경기로 영업이 어려워서, 다음과 같이 두 가지 행사를 통해서 매상을 올리고자 한다. 원래 회전 초밥은 손님이 마음대로 초밥을 고르고, 먹은 초밥만큼 식대를 계산하지만, 벨트의 임의의 한 위치부터 k개의 접시를 연속해서 먹을 경우 할인된 정액 가격으로 제공한다. 각 고객에게 초밥의 종류 하나가 쓰인 쿠폰을 발행하고, 1번 행사에 참가할 경우 이 쿠폰에 적혀진 종류의..

[네트워크] 방화벽의 동작원리

방화벽은 외부 네트워크로부터 내부 네트워크를 보호하는 역할을 한다. 방화벽을 설치하지 않는다면 외부 네트워크에 그대로 노출이 되어있는 상태가 되기 때문에 공격받기가 쉬워진다. 따라서 방화벽의 설치는 필수적이다. 방화벽은 종류에 따라 동작하는 원리가 조금씩 다르다. 오늘은 방화벽의 기본 동작과 종류에 대해 알아보자. 방화벽의 기본 동작 방화벽은 외부에서의 모든 접속을 차단한다. 이후 보안 규칙에 따라 일부 요청을 내부 네트워크로 접속할 수 있도록 허가하고 포트번호를 통해 특정 프로그램에만 접근할 수 있도록 한다. 예를 들어 어떠한 패킷이 웹 서버로 전송되었다면 80번 포트를 열어 해당 패킷이 접속할 수 있도록 허용한다. 방화벽의 종류는 패킷 필터링형, 상태 분석형, 웹방화벽 등이 있으며 종류에 따라 동작방..

CS/네트워크 2021.07.19

[백준 12847] 꿀 아르바이트

문제 윤호는 퍼주기로 유명한 편의점 사장이다. 그의 편의점에는 특이한 임금 체계를 가지고 있다. 각 날마다 일의 차이때문에 일마다 급여가 정해져 있다. 윤호는 오차 없이 일급을 따박 따박 당일에 준다. 정해진 일 수 만큼만 일을 시킨다. 한번이라도 퇴직한 자를 다시 취직 시키지 않는다. (만약 취직을 한다면, 일을 시작 한 날부터 끝날 때까지 하루도 빠지면 안 된다.) 무서운 아르바이트를 짤린 준수는 n+1일 후에 001에 월세를 내야 해서 윤호가 사장으로 있는 편의점에 취직하려 한다. 다행히 주변 퇴직자들의 얘기로 급여에 관련해 파악했다. 또한 퇴직자들의 급여 통계를 통해 당장 n일 후까지 일급 정보를 알아냈다. 하지만 준수는 시험을 준비해야 하기에 최대 m일 밖에 일을 할 수 없다. 어제까지 과제를 ..

[백준 10025] 게으른 백곰

문제 더운 여름날 동물원의 백곰 앨버트는 너무 더워서 꼼짝도 하기 싫다. 다행히도 사육사들이 앨버트의 더위를 식히기 위해 얼음이 담긴 양동이들을 가져다 주었다. 앨버트가 가장 적은 거리만 움직이고도 최대한 많은 얼음으로 더위를 식힐 수 있도록 도와주자. 우리 안은 1차원 배열로 생각하며, 총 N(1 ≤ N ≤ 100000)개의 얼음 양동이들이 xi(0 ≤ xi ≤ 1,000,000)좌표마다 놓여 있고 각 양동이 안에는 gi(1 ≤ gi ≤ 10,000)씩의 얼음이 들어 있다. 일단 앨버트가 자리를 잡으면 그로부터 좌우로 K(1 ≤ K ≤ 2,000,000) 만큼 떨어진 양동이까지 닿을 수 있다. 앨버트는 양동이가 놓여 있는 자리에도 자리잡을 수 있다. 모든 얼음 양동이의 위치는 다르다. 앨버트가 최적의 ..

[백준 19238] 스타트 택시

문제 스타트링크가 "스타트 택시"라는 이름의 택시 사업을 시작했다. 스타트 택시는 특이하게도 손님을 도착지로 데려다줄 때마다 연료가 충전되고, 연료가 바닥나면 그 날의 업무가 끝난다. 택시 기사 최백준은 오늘 M명의 승객을 태우는 것이 목표이다. 백준이 활동할 영역은 N×N 크기의 격자로 나타낼 수 있고, 각 칸은 비어 있거나 벽이 놓여 있다. 택시가 빈칸에 있을 때, 상하좌우로 인접한 빈칸 중 하나로 이동할 수 있다. 알고리즘 경력이 많은 백준은 특정 위치로 이동할 때 항상 최단경로로만 이동한다. M명의 승객은 빈칸 중 하나에 서 있으며, 다른 빈칸 중 하나로 이동하려고 한다. 여러 승객이 같이 탑승하는 경우는 없다. 따라서 백준은 한 승객을 태워 목적지로 이동시키는 일을 M번 반복해야 한다. 각 승객..

[백준 17140] 이차원 배열과 연산

문제 크기가 3×3인 배열 A가 있다. 1초가 지날때마다 배열에 연산이 적용된다. R 연산: 배열 A의 모든 행에 대해서 정렬을 수행한다. 행의 개수 ≥ 열의 개수인 경우에 적용된다. C 연산: 배열 A의 모든 열에 대해서 정렬을 수행한다. 행의 개수 0: for j in range(idx, max_len+1): board[i][j] = 0 else: max_len = 0 temp = [[] for _ in range(101)] for i in range(1, cols + 1): max_number = 0 counter = [0 for _ in range(101)] for j in range(1, rows + 1): max_number = max(max_number, board[j][i]) counter..

[백준 14503] 로봇 청소기

문제 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 벽 또는 빈 칸이다. 청소기는 바라보는 방향이 있으며, 이 방향은 동, 서, 남, 북중 하나이다. 지도의 각 칸은 (r, c)로 나타낼 수 있고, r은 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로 부터 떨어진 칸의 개수이다. 로봇 청소기는 다음과 같이 작동한다. 현재 위치를 청소한다. 현재 위치에서 현재 방향을 기준으로 왼쪽 방향부터 차례대로 인접한 칸을 탐색한다. 왼쪽 방향에 아직 청소하지 않은 공간이 존재한다면, 그 방향으로 회전한 다음 한 칸을 전진하고 1번부터 진행한다. 왼쪽 방향..

728x90
반응형