본문 바로가기

분류 전체보기

(97)
[백준 파이썬] 16194번 카드 구매하기 2 https://www.acmicpc.net/problem/16194 16194번: 카드 구매하기 2 첫째 줄에 민규가 구매하려고 하는 카드의 개수 N이 주어진다. (1 ≤ N ≤ 1,000) 둘째 줄에는 Pi가 P1부터 PN까지 순서대로 주어진다. (1 ≤ Pi ≤ 10,000) www.acmicpc.net import sys input = sys.stdin.readline n = int(input()) card = [0] + list(map(int, input().split())) dp = [10001] * (n+1) dp[0], dp[1] = 0, card[1] for i in range(2, n+1): for j in range(1, i+1): dp[i] = min(dp[i], card[j] + d..
[프로그래머스 파이썬] 124 나라의 숫자 https://school.programmers.co.kr/learn/courses/30/lessons/12899 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(n): answer = '' while n: # 3으로 나누었을때 나머지 1이면 1추가, 2면 2추가 # 나누어 떨어지면 4를 추가 if n % 3: answer += str(n%3) n //= 3 else: answer += '4' n = (n-1)//3 return answer[::-1] 3진법으로 n을 3으로 나누는데 3으로 나눴을때 나머지가 1이면 1추가 2면 2를추..
[파이썬 백준] 1406번 에디터 https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net import sys input = sys.stdin.readline alpha = list(input().rstrip()) n = int(input()) cur = len(alpha) for _ in range(n): action = list(input().split()) act = action[0] if act == 'P': alpha.insert(cur, action[1]) cur += 1 el..
2.5 HTTP (2) 2.5.4 HTTPS HTTP/2는 HTTPS 위에서 동작한다. HTTPS는 애플리케이션 계층과 전송 계층 사이에 신뢰 계층인 SSL/TLS 계층을 넣은 신뢰할 수 있는 HTTP 요청을 말한다. 이를 통해 통신을 암호화 한다. SSL/TLS SSL은 SSL 1.0부터 시작해서 TLS 1.3까지 버전이 올라가며 마지막으로 TLS로 명칭이 변경되었으나 이를 합쳐 SSL/TLS라고 불린다. SSL/TLS는 전송 계층에서 보안을 제공하는 프로토콜이다. 클라이언트와 서버가 통신할 때 SSL/TLS를 통해 제3자가 메시지를 도청하거나 변조하지 못하도록 한다. 보안 세션을 기반으로 데이터를 암호화하며 보안 세션이 만들어질 때 인증 메커니즘, 키 교환 암호화 알고리즘, 해싱 알고리즘이 사용된다. 보안세션 보안이 시작되..
2.5 HTTP (1) 2.5.1 HTTP/1.0 HTTP/1.0은 기본적으로 한 연결당 하나의 요청을 처리하도록 설계되어있다. 이는 RTT 증가를 불러옴 RTT 증가 서버로부터 파일을 가져올 때마다 TCP의 3-way handshake를 계속해서 열어야 하기 때문에 RTT가 증가하는 단점이 있다. RTT는 패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 시간 (패킷 왕복 시간) RTT의 증가를 해결하기 위한 방법 매번 연결할 때마다 RTT가 증가하여 서버에 부담이 가고 사용자 응답시간이 길어짐 이를 해결하기 위해 이미지 스플리팅, 코드 압축, 이미지 Base64 인코딩을 사용하곤 함 이미지 스플리팅 많은 이미지를 다운받게 되면 과부하가 걸려 많은 이미지가 합쳐 있는 하나의 이미지를 다운받고 이를 기반으로 ba..
[백준 파이썬] 1717번 집합의 표현 https://www.acmicpc.net/problem/1717 1717번: 집합의 표현 첫째 줄에 n(1 ≤ n ≤ 1,000,000), m(1 ≤ m ≤ 100,000)이 주어진다. m은 입력으로 주어지는 연산의 개수이다. 다음 m개의 줄에는 각각의 연산이 주어진다. 합집합은 0 a b의 형태로 입력이 주어진다. 이는 www.acmicpc.net import sys input = sys.stdin.readline def find_set(x): if p[x] == x: return x parent = find_set(p[x]) p[x] = parent return parent def union(a, b): p_a = find_set(a) p_b = find_set(b) p[p_b] = p_a n, m..
2.4 IP 주소 2.4.1 ARP 컴퓨터와 컴퓨터 간의 통신은 IP주소 기반으로 통신한다고 알고있지만 사실 IP 주소에서 ARP를 통해 MAC 주소를 찾아 MAC 주소를 기반으로 통신 ARP란 IP 주소로부터 MAC 주소를 구하는 IP와 MAC 주소의 다리 역할을 하는 프로토콜 ARP를 통해 가상 주소인 IP 주소를 실제 주소인 MAC 주소로 변환 RARP를 통해 실제 주소인 MAC주소를 가상 주소인 IP주소로 변환하기도 한다. ARP의 주소를 찾는 과정 장치 A가 ARP Request 브로드캐스트를 보내서 IP 주소에 해당하는 MAC 주소를 찾는다. 해당 주소에 맞는 장치 B가 ‘ARP reply 유니퀘스트’를 통해 MAC 주소를 반환하는 과정을 거쳐 IP 주소에 맞는 MAC 주소를 찾게 된다. 2.4.2 홉바이홉 통..
[백준 파이썬] 2589번 보물섬 https://www.acmicpc.net/problem/2589 2589번: 보물섬 보물섬 지도를 발견한 후크 선장은 보물을 찾아나섰다. 보물섬 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 각 칸은 육지(L)나 바다(W)로 표시되어 있다. 이 지도에서 www.acmicpc.net import sys from collections import deque input = sys.stdin.readline n, m = map(int, input().split()) arr = [list(input()) for _ in range(n)] dr = [0,1,0,-1] dc = [1,0,-1,0] def bfs(i, j): visited = [[0]*m for _ in range(n)] q..