📑 Category

[BOJ] 백준 20055번 컨베이어 벨트 위의 로봇 - 파이썬(Python)
문제 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부터 2N까지의 번호가 매겨져 있다. 벨트가 한 칸 회전하면 1번부터 2N-1번까지의 칸은 다음 번호의 칸이 있는 위치로 이동하고, 2N번 칸은 1번 칸의 위치로 이동한다. i번 칸의 내구도는 Ai이다. 위의 그림에서 1번 칸이 있는 위치를 "올리는 위치", N번 칸이 있는 위치를 "내리는 위치"라고 한다. 컨베이어 벨트에 박스 모양 로봇을 하나씩 올리려고 한다. 로봇은 올리는 위치에만 올릴 수 있다. 언제든지 로봇이 내리는 위치에 도달하면 그 즉시 내린다. 로봇은 컨베이어 벨트 위에서 스스로 이동할 수 있..

[네트워크] GET 메서드와 POST 메서드 특징, 차이
GET과 POST는 HTTP 프로토콜을 이용해 서버에 데이터를 전달할 때 사용되는 방식이다. 각각 GET과 POST 메서드의 특징 및 차이는 다음과 같다. GET 메서드 개념 정보 조회를 위한 메서드 클라이언트가 서버에서 데이터를 가져와 보여주기 위해 사용 가져오는 것 (Select) 사용 방법 URL 끝에 '?'를 포함해 key=value 형식의 쿼리스트링(Query String)를 붙혀 서버에 전송 요청 정보인 쿼리스트링(Query String)이 여러 개일 경우 '&'로 구분 ex) www.example.com?name1=value1&name2=value2 특징 URL에 쿼리스트링(데이터)를 붙혀 전송 데이터를 헤더(Header)에 포함하여 전송 HTTP 패킷의 body는 비어있는 상태로 전송 bo..

[BOJ] 백준 16234번 인구 이동 - 파이썬(Python)
문제 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모든 나라는 1×1 크기이기 때문에, 모든 국경선은 정사각형 형태이다. 오늘부터 인구 이동이 시작되는 날이다. 인구 이동은 하루 동안 다음과 같이 진행되고, 더 이상 아래 방법에 의해 인구 이동이 없을 때까지 지속된다. 국경선을 공유하는 두 나라의 인구 차이가 L명 이상, R명 이하라면, 두 나라가 공유하는 국경선을 오늘 하루 동안 연다. 위의 조건에 의해 열어야하는 국경선이 모두 열렸다면, 인구 이동을 시작한다. 국경선이 열려있어 인접한 칸만을 이용해 이동할 수 있으면, 그 나라를 오늘 하루 동안은..

[BOJ] 백준 14500번 테트로미노 - 파이썬(Python)
문제 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변끼리 연결되어 있어야 한다. 즉, 꼭짓점과 꼭짓점만 맞닿아 있으면 안 된다. 정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다. 아름이는 크기가 N×M인 종이 위에 테트로미노 하나를 놓으려고 한다. 종이는 1×1 크기의 칸으로 나누어져 있으며, 각각의 칸에는 정수가 하나 쓰여 있다. 테트로미노 하나를 적절히 놓아서 테트로미노가 놓인 칸에 쓰여 있는 수들의 합을 최대로 하는 프로그램을 작성하시오. 테트로미노는 반드시 한 정사각형이 정확히 하나의 칸을 포함하도록 놓아야 하며, 회..

[BOJ] 백준 14888번 연산자 끼워넣기 - 파이썬(Python)
문제 N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 N-1개의 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(×), 나눗셈(÷)으로만 이루어져 있다. 우리는 수와 수 사이에 연산자를 하나씩 넣어서, 수식을 하나 만들 수 있다. 이때, 주어진 수의 순서를 바꾸면 안 된다. 예를 들어, 6개의 수로 이루어진 수열이 1, 2, 3, 4, 5, 6이고, 주어진 연산자가 덧셈(+) 2개, 뺄셈(-) 1개, 곱셈(×) 1개, 나눗셈(÷) 1개인 경우에는 총 60가지의 식을 만들 수 있다. 예를 들어, 아래와 같은 식을 만들 수 있다. 1+2+3-4×5÷6 1÷2+3+4-5×6 1+2÷3×4-5+6 1÷2×3-4+5+6 식의 계산은 연산자 우선..

[BOJ] 백준 3190번 뱀 - 파이썬(Python)
문제 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임은 NxN 정사각 보드위에서 진행되고, 몇몇 칸에는 사과가 놓여져 있다. 보드의 상하좌우 끝에 벽이 있다. 게임이 시작할때 뱀은 맨위 맨좌측에 위치하고 뱀의 길이는 1 이다. 뱀은 처음에 오른쪽을 향한다. 뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따른다. 먼저 뱀은 몸길이를 늘려 머리를 다음칸에 위치시킨다. 만약 이동한 칸에 사과가 있다면, 그 칸에 있던 사과가 없어지고 꼬리는 움직이지 않는다. 만약 이동한 칸에 사과가 없다면, 몸길이를 줄여서 꼬리가 위치한 칸을 비워준다. 즉, 몸길이는 변하지 않는..

[네트워크] HTTP와 HTTPS 프로토콜
HTTP (Hyper Text Transfer Protocol) 웹 상에서 클라이언트와 서버 간에 요청(request)과 응답(response)으로 정보를 주고 받을 수 있는 프로토콜 TCP와 UDP 사용, 80번 포트 사용 비연결(Connectionless) 클라이언트가 서버에게 요청을 보내고 서버가 적절한 응답을 클라이언트에게 보내면 연결이 바로 끊김 간단하기 때문에 자원이 적게 든다는 장점 동일한 클라이언트의 모든 요청에 대해 매번 새로운 연결과 해제의 과정을 거쳐야해 오버헤드가 발생한다는 단점 무상태(Stateless) 연결을 끊는 순간 클라이언트와 서버의 통신은 끊기며 상태 정보를 유지하지 않음 서버는 클라이언트를 식별할 수 없어 매번 인증 과정 필요 단방향성 클라이언트의 요청 한 개에 대해 한..

[네트워크] TCP의 3-way handshake와 4-way handshake
3-way handshake TCP 통신으로 데이터를 전송하기 위해 네트워크 연결을 설정하는 과정 양 측 모두 데이터를 전송할 준비가 되어있음을 보장하기 위해 사전에 세션을 수립함 실제로 데이터 전달이 시작되기 전에 수신 측이 데이터를 받을 준비가 되어 있다는 것을 알 수 있도록 함 3-way hanshaking 과정 * Host A(=클라이언트), Host B(=서버) 통신 Host A는 Host B에게 접속을 요청하는 SYN 패킷 전송 송신자가 최초로 데이터를 전송할 때 Sequence Number는 임의의 숫자로 지정하고, SYN 플래그 비트를 1로 설정한 세그먼트 전송 포트 상태 Host A: CLOSED / Host B: LISTEN 접속 요청을 받은 Host B는 Host A에게 해당 요청을 ..