전체 글 86

[네트워크] 쿠키와 세션

HTTP 프로토콜의 특징이자 약점을 보완하기 위해서 쿠키 또는 세션을 사용합니다. 💨HTTP HTTP 통신의 특징 비연결지향(Connectionless) 클라이언트가 서버에 request를 하면 그 요청에 맞는 response를 보낸 후 연결을 끊는다. 무상태(Stateless) 클라이언트의 상태 정보를 가지지 않는다. 서버의 자원을 절약하기 위해 모든 요청마다 연결과 해제의 과정을 거침 -> 연결 상태가 유지되지 않고 연결 해체 후 상태 정보가 저장되지 않는다 -> 같은 사용자가 요청을 여러번 하더라도 매번 새로운 사용자로 인식 서버가 클라이언트를 식별하게 해주는 것이 쿠키와 세션 🍪 쿠키 (Cookie) 클라이언트 로컬에 저장되는 key-value 형태의 데이터 파일입니다. 특징 이름, 값, 저장기간..

[백준] 14500번: 테트로미노 - 파이썬

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

Algorithm 2022.02.07

[Algorithm] Two Pointers

📌 Two Pointers 1차원 배열에서 두 개의 포인터를 사용하여 원하는 결과를 얻는 알고리즘 "특정한 합을 가지는 부분 연속 수열" 문제에서는 Two Pointer를 사용! 대표적으로 투 포인터를 활용한 문제는 다음과 같은 문제다. Q. 정렬된 리스트 A와 타겟 값 S가 주어졌을 때, 두 수의 합이 S가 되는 순서쌍을 모두 구하여라. 가장 먼저 떠오르는 풀이는 이중 반복문을 이용해 탐색하는 방법일 것이다. for i in range(len(A)): for j in range(i+1, len(A)): if A[i] + A[j] == S: print(A[i],A[j]) 매우 단순하고 직관적이지만 시간 복잡도가 O(n^2)이라 데이터가 커지면 시간초과가 발생할 가능성이 크다. 또한 문제가 두 수의 합이 ..

Algorithm/이론 2022.02.05

[백준] 3273번: 두 수의 합- 파이썬( 투 포인터)

https://www.acmicpc.net/problem/3273 3273번: 두 수의 합 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 www.acmicpc.net 문제 n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 (ai, aj)쌍의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수열의 크기 n이 ..

Algorithm 2022.02.05

[이것이 취업을 위한 코딩 테스트다 with 파이썬] Ch3. 그리디 알고리즘

그리디 알고리즘 현재 상황에서 지금 당장 좋은 것만 고르는 방법 실전문제 1- 큰 수의 법칙 주어진 수들을 M번 더 해서 가장 큰 수 만들기 (특정 인덱스에 해당하는 수가 연속해서 K번 초과 X) ## 내가 작성한 코드 N,M,K = map(int, input().split()) numbers=list(map(int, input().split())) numbers.sort(reverse=True) cnt = 0 result = 0 if numbers[0]==numbers[1]: while cnt < M: result+=numbers[0] cnt+=1 else: while cnt < M: for _ in range(K): result += numbers[0] cnt+=1 if cnt == M: break ..

[백준] 17837번: 새로운 게임 2 - 파이썬

문제 재현이는 주변을 살펴보던 중 체스판과 말을 이용해서 새로운 게임을 만들기로 했다. 새로운 게임은 크기가 N×N인 체스판에서 진행되고, 사용하는 말의 개수는 K개이다. 말은 원판모양이고, 하나의 말 위에 다른 말을 올릴 수 있다. 체스판의 각 칸은 흰색, 빨간색, 파란색 중 하나로 색칠되어있다. 게임은 체스판 위에 말 K개를 놓고 시작한다. 말은 1번부터 K번까지 번호가 매겨져 있고, 이동 방향도 미리 정해져 있다. 이동 방향은 위, 아래, 왼쪽, 오른쪽 4가지 중 하나이다. 턴 한 번은 1번 말부터 K번 말까지 순서대로 이동시키는 것이다. 한 말이 이동할 때 위에 올려져 있는 말도 함께 이동한다. 말의 이동 방향에 있는 칸에 따라서 말의 이동이 다르며 아래와 같다. 턴이 진행되던 중에 말이 4개 이..

Algorithm 2022.01.22

[백준] 16235번: 나무 재테크- 파이썬

문제 부동산 투자로 억대의 돈을 번 상도는 최근 N×N 크기의 땅을 구매했다. 상도는 손쉬운 땅 관리를 위해 땅을 1×1 크기의 칸으로 나누어 놓았다. 각각의 칸은 (r, c)로 나타내며, r은 가장 위에서부터 떨어진 칸의 개수, c는 가장 왼쪽으로부터 떨어진 칸의 개수이다. r과 c는 1부터 시작한다. 상도는 전자통신공학과 출신답게 땅의 양분을 조사하는 로봇 S2D2를 만들었다. S2D2는 1×1 크기의 칸에 들어있는 양분을 조사해 상도에게 전송하고, 모든 칸에 대해서 조사를 한다. 가장 처음에 양분은 모든 칸에 5만큼 들어있다. 매일 매일 넓은 땅을 보면서 뿌듯한 하루를 보내고 있던 어느 날 이런 생각이 들었다. 나무 재테크를 하자! 나무 재테크란 작은 묘목을 구매해 어느정도 키운 후 팔아서 수익을 ..

Algorithm 2022.01.22

[백준] 17780번: 새로운 게임 - 파이썬

문제 재현이는 주변을 살펴보던 중 체스판과 말을 이용해서 새로운 게임을 만들기로 했다. 새로운 게임은 크기가 N×N인 체스판에서 진행되고, 사용하는 말의 개수는 K개이다. 말은 원판모양이고, 하나의 말 위에 다른 말을 올릴 수 있다. 체스판의 각 칸은 흰색, 빨간색, 파란색 중 하나로 색칠되어있다. 게임은 체스판 위에 말 K개를 놓고 시작한다. 말은 1번부터 K번까지 번호가 매겨져 있고, 이동 방향도 미리 정해져 있다. 이동 방향은 위, 아래, 왼쪽, 오른쪽 4가지 중 하나이다. 턴 한 번은 1번 말부터 K번 말까지 순서대로 이동시키는 것이다. 한 말이 이동할 때 위에 올려져 있는 말도 함께 이동하며, 가장 아래에 있는 말만 이동할 수 있다. 말의 이동 방향에 있는 칸에 따라서 말의 이동이 다르며 아래와..

Algorithm 2022.01.20

[백준] 16234번: 인구 이동 - 파이썬 (+문제 설명)

16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 문제 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모든 나라는 1×1 크기이기 때문에, 모든 국경선은 정사각형 형태이다. 오늘부터 인구 이동이 시작되는 날이다. 인구 이동은 하루 동안 다음과 같이 진행되고, 더 이상 아래 방법에 의해 인구 이동이 없을 때까지 지속된다. 국경선을 공유하는 두 나라..

Algorithm 2022.01.14
728x90