전체 글

전체 글

    [Recon] 웹스캐닝 도구 - httpx

    보호되어 있는 글입니다.

    [밑바닥딥러닝1] 5장 오차역전파법

    신경망 학습은 손실 함수 값을 가장 작게 만드는 가중치 매개변수를 찾는 것.-> 손실 함수의 기울기 활용 4장에서의 수치 미분 방법은 계산 시간이 오래 걸린다는 단점이 있다.5장에서는 더 효율적으로 계산하는 '오차역전파법'을 다루고 있다.  * 국소적 계산- 자신과 관계된 정보만으로 결과를 출력할 수 있다.- 전체가 아무리 복잡해도 각 노드에서는 단순한 계산에 집중하여 문제를 단순화시킬 수 있다.- 중간 계산 결과를 모두 보관할 수 있다. * 미분을 효율적으로 계산- 소비세에 대한 지불 금액의 미분, 사과 개수에 대한 지불 금액의 미분 등- 중간 과정에서의 사과 가격이 전체에 얼마나 영향을 주는지 쉽게 구할 수 있다. - 계산 방법 : 노드로 들어온 입력 신호 x 그 노드의 국소적 미분(편미분)- 덧셈 ..

    [Algorithm][벨만포드] 백준 11657 : 타임머신

    """BOJ 타임머신 문제 (https://www.acmicpc.net/problem/11657)1 벨만포드 알고리즘2. 시간복잡도- O(VE)3. 자료구조"""import sysinput = sys.stdin.readlineN,M = map(int, input().split())edges = [] #간선 테이블INF = int(1e9)distance = [INF]*(N+1) #최단 거리 테이블for _ in range(M): a, b, c = map(int, input().split()) edges.append((a,b,c))def bellmanford(start): distance[start]=0 for i in range(N): for j in range(M): #..

    [Algorithm][다익스트라]

    """시간복잡도 :최단 거리 테이블에서 가장 짧은 거리의 노드를 매번 탐색.해당 노드와 연결된 노드를 또 탐색.=> V = 노드의 개수, O(V^2)* 노드의 개수가 만개 이상이라면, 다른 개선된 알고리즘을 사용해야 한다. """import sysinput = sys.stdin.readlineINF = int(1e9)n, m = map(int, input().split())start = int(input())graph = [[] for _ in range(n+1)]visited = [False] * (n+1)distance = [INF] * (n+1)for _ in range(m): a, b, c = map(int, input().split()) graph[a].append((b,c))# 최단..

    [Algorithm] 이코테 : 두 배열의 원소 교체

    시간복잡도를 잘못 계산했나?왜 계수 정렬이 더 좋아보이지.. """문제: 배열A의 모든 원소의 합이 최대가 되도록 하라.최대 K번의 바꿔치기 연산을 수행하여 만들 수 있는 배열 A의 모든 원소의 합의 최댓값(1 B의 가장 큰 원소2. 시간복잡도(1) 계수 정렬- A, B 정렬 : O(N+R)=10만+10만=20만   참고 - https://www.youtube.com/watch?v=KGyK-pNvWos&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=4

    [Algorithm] 선택정렬, 삽입정렬, 계수정렬

    [Algorithm] 선택정렬, 삽입정렬, 계수정렬

    1. 선택정렬""" 1. 특징- average,worst,best : 모두 O(N^2)로 동일2. 시간 복잡도 : O(N^2)N + (N-1) + (N-2) + ... + 1 (N^2+N-2)/2 => O(N^2)"""array = [7,4,6,2,1,9,0]for i in range(len(array)): min_index = i #가장 작은 원소의 인덱스 for j in range(i+1, len(array)): print(j, end=' ') if array[min_index] > array[j]: min_index = j print() array[i], array[min_index] = array[min_index], array[i..

    [Algorithm][이진탐색] 백준 1920 : 수찾기

    """1. 아이디어- N개의 수 먼저 정렬- M개를 for문 돌면서, 이진탐색- 이진탐색 안에서 데이터를 찾으면 1출력, 아니면 0출력2. 시간복잡도일반) O(N*M) = 1e5 * 1e5 = 1e10 (100억) >> 2억 초과 !이진탐색 개선) - N개의 입력값 정렬 : O(N*logN)- M개를 N개 중에서 이진탐색 : O(M*logN)- 총합 : O((N+M)*logN)=(2e5)*20=4e6 => 가능!3. 자료구조- N개 숫자 : int[] - 모든 수 범위: -2^31   참고 - https://www.youtube.com/watch?v=D1ad7UCbWHY&list=PLi-xJrVzQaxXC2Aausv_6mlOZZ2g2J6YB&index=7

    [Algorithm][dfs, bfs] 백준 1260 : dfs와 bfs

    """1. 아이디어- DFS : 재귀- BFS : Queue2. 시간복잡도- graph 초기화 : O(N^2)- BFS : O(N+M)- DFS : O(N+M)3. 자료구조- BFS graph : bool[N+1][N+1] 사용 (popleft가 구현되어있다. 시간복잡도가 낮다)- visited : bool[N+1]- BFS deque4. 학습- 4방향 벡터는 2차원 행렬에서 필요. 이 문제는 1차원 리스트 형태.- queue의 FIFO 특성을 구현한 것: deque"""import sysfrom collections import dequeinput = sys.stdin.readlineN,M,V = map(int, input().split())graph = [[False]*(N+1) for _ in ra..

    [Algorithm] 백준 11660 : 구간합 구하기

    * 구간합 사용 이유Prefix Sum을 사용하면 배열의 특정 구간의 합을 O(1) 시간에 구할 수 있기 때문이다. 배열의 크기가 크고, 구간 합을 여러 번 계산해야 하는 경우에 유용하다.=> 데이터 분석, 이미지 처리, 게임 개발, 금융 데이터 분석 등 대용량 데이터에서 특정 구간의 통계치를 빠르게 계산해야 하는 경우에 유용 """문제: 11660. 구간합 구하기1. 아이디어- M이 매우 크기 때문에 미리 합이 구해진 구간합 배열: prefix_arr- D[x2][y2] - D[x1-1][y2] - D[x2][y1-1] + D[x1-1][y1-1]2. 시간복잡도O(N^2+M)3. 자료구조prefix_arr = int[N+1][N+1]"""import sysinput = sys.stdin.readline..

    [Network] IGRP 라우팅 프로토콜

    RIP와 같이 Distance Vector 라우팅 프로토콜에 속한다. Distance-Vector Routing Protocol / Dynamic Routing Protocol / 내부용 라우팅 프로토콜   IGRP (Interior Gateway Routing Protocol)* 배경RIP가 초기에 만들어져서 인터넷이 이렇게 규모가 커질 줄 몰랐다.홉 카운트가 15개 제한..=> IGRP 등장 * 특징1홉 카운트로만 경로를 결정하지 않고,bandwidth, delay, Reliability, Load, MTU => 5가지 요인으로 경로 선택을 한다.속도가 빠른 길 찾아감. RIP보다 똑똑!  * 특징2 최대 홉 카운트: 255 -> 좀 더 큰 네트워크에 사용 가능. * 특징3VLSM(Variable L..

    [Algorithm][dfs] 백준-2667

    그래프 탐색 알고리즘!DFS = Depth-first search 깊이 우선 탐색자료구조: Stack, 재귀함수 * 재귀함수: 자기 자신을 호출하는 함수종료되는 시점을 정확히 명시하기. 너무 깊어지면 Stack overflow 발생.=> DFS, 백트래킹에서 주로 사용 시간복잡도: O(V+E), vertex + edge  https://www.acmicpc.net/problem/2667"""1. 아이디어- 2중 for, 값이 1이고 방문하지 않았다면 => DFS- DFS를 통해 찾은 값을 저장 후 정렬해서 출력2. 시간복잡도DFS = O(V+E)V : n * nE : n * 4 * nV + E : 5 * n^2O(V+E) : 5n^2=n^2 => 25 * 25 = 625    참고 - 유튜브 선생님 :)..

    [Algorithm][bfs] 백준-1926

    https://www.acmicpc.net/problem/1926 import sysinput = sys.stdin.readlinen,m = map(int, input().split())arr = [list(map(int, input().split())) for _ in range(n)]chk = [[False]*m for _ in range(n)]# 암기 - 4방향 벡터, 오-위-왼-아dy = [0, 1, 0, -1]dx = [1, 0, -1, 0]def bfs(y, x): # bfs 구현 암기 rs = 1 q = [(y,x)] while q: ey, ex = q.pop() for k in range(4): ny = ey + dy[k] ..

    [밑바닥딥러닝1] 4장 신경망 학습 - 오차제곱합, 교차 엔트로피 오차

    [밑바닥딥러닝1] 4장 신경망 학습 - 오차제곱합, 교차 엔트로피 오차

    신경망 학습: 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것. * 손실함수 -> 신경망이 학습할 수 있도록 도와주는 지표 손실함수의 결과값을 가장 작게 만드는 가중치 매개변수를 찾는 것임. 신경망은 데이터를 보고 학습할 수 있다는 특징이 있다.데이터를 보고 학습한다는 것은 가중치 매개변수를 자동으로 결정한다는 것.  숫자 5를 인식하는 알고리즘을 설계하는 대신,주어진 이미지 데이터들에서 특징을 추출하고 그 특징의 패턴을 기계학습 기술로 학습한다.이미지 데이터 -> 벡터 -> (지도학습) SVM, KNN 으로 학습 * 딥러닝 end-to-end machine learning 처음부터 끝까지 데이터 입력에서 출력까지 사람의 개입이 없다.신경망은 주어진 데이터를 온전히 학습하고, 패턴을 발..

    [AD] 실습 환경 세팅

    [AD] 실습 환경 세팅

    * 참고: 이것이_Windows_Server다_개정판.pdf----------------------------------------------------------------AD 실습 환경 구축 ----------------------------------------------------------------도메인 컨트롤러 = (책) FIRST => DC01도메인 멤버 컴퓨터 = (책) WinClient => WIN01, WIN02도메인 = (책) hanbit.com => practice.localusers => james, john, aiden  1. 도메인컨트롤러 - DC01     2. 도메인멤버 - WIN01, WIN02   3. 도메인 컨트롤러 설정 확인 - 사용자 추가

    [밑바닥딥러닝1] 3장 신경망 - 활성화함수(계단 함수, 시그모이드 함수, ReLU 함수)

    [밑바닥딥러닝1] 3장 신경망 - 활성화함수(계단 함수, 시그모이드 함수, ReLU 함수)

    📌  신경망입력층 -> 은닉층 -> 출력층 📌 활성화 함수(activation function)입력 신호의 총합을 출력 신호로 변환하는 함수 퍼셉트론 => 활성화 함수가 step function 계단 함수 였음.활성화 함수를 계단 함수에서 다른 함수로 변경하는 것이 신경망으로 나아가는 것임.  = 퍼셉트론과 신경망의 차이는 활성화 함수 1. 계단 함수def step_function(x): y = x>0 return y.astype(np.int) >>> import numpy as np>>> x = np.array([-1.0, 1.0, 2.0])>>> xarray([-1., 1., 2.])>>> y = x>0>>> yarray([False, True, True])>>> y = ..

    [밑바닥딥러닝1] 2장 퍼셉트론 - AND,NAND,OR 게이트

    Perceptron 이란? 다수의 신호를 입력으로 받아 하나의 신호를 출력한다. AND 게이트>>> def AND(x1, x2):... w1, w2, theta = 0.5, 0.5, 0.7... tmp = x1*w1 + x2*w2... if tmp theta:... return 1...>>> AND(0,0)0>>> AND(1,0)0>>> AND(0,1)0>>> AND(1,1)1  + 가중치(weight)와 편향(bias) 도입가중치 (w1, w2)는 "각 입력 신호가 결과에 주는 영향력(중요도)을 조절하는 매개변수"편향(bias)은 "뉴런이 얼마나 쉽게 활성화(결과 1) 하느냐를 조정하는 매개변수" >>> import numpy as np>>> x = np.a..

    [Network] Distance-Vector 라우팅 알고리즘

    v 이더넷과 시리얼 인터페이스는 서로 다른 네트워크여야 한다 v 한 라우터에서 라우팅 프로토콜을 2개 이상 사용해야 한다면 Adminstrative Distance가 가장 작은 게 우선 ! * 라우팅 프로토콜별 Adminstrative DistanceRIP(120), IGRP(100), OSPF(110)Connected interface(0),Static route out an interface(0),Static route to a next hop(1) Distance-Vector 라우팅 알고리즘 라우팅 테이블 정보를 주기적으로 (30초) 계속 전달 업데이트가 모든 네트워크에 전달되는 시간 Convergence Time이 많이 발생한다.=> 루핑 발생 v 루핑이 발생하는 이유한 라우터가 라우팅 정보에 대..

    JWT Token Signature last character

    JWT Token Signature last character

    최근 JWT token 취약점 공부하다가,token의 signature 마지막 글자를 바꿔도 유효한 토큰이 된다는 얘기를 듣고그 원리가 궁금하여 공부한 내용을 공유하고자 합니다. PPT로 만들었는데 단순 파일만 올리기 밋밋하여.. 본문에 사진으로도 첨부합니다!      간단하게 분석을 해보았습니다! 피드백은 매우 환영 입니다 😀