목록분류 전체보기 (28)
새벽의 블로그
인공지능 (Artificial Intelligence) 인간의 지능을 모방하는 기술.기계가 인간처럼 학습, 사고, 문제 해결, 결정을 내리는 시스템입니다. 머신러닝 (Machine Learning)머신러닝은 인공지능의 하위 분야입니다.머신러닝은 기계에게 데이터를 학습하도록 하여 스스로 성능을 개선하도록 합니다.즉 머신러닝에는 데이터와 알고리즘이 필요합니다.알고리즘을 따라 주어진 데이터를 학습하고, 새로운 데이터에 대해 결과를 예측할 수 있습니다. 알고리즘에는 의사 결정 트리 학습, 귀납 논리 프로그래밍, 클러스터링, 강화 학습, 베이지안(Bayesian) 네트워크와 같은 것들이 포함됩니다. 머신러닝에는 지도 학습(Supervised Learning) / 비지도 학습(Unsupervised Learning..
군 (Group) 이란?군은 특정 연산을 만족하는 집합과 그 집합에서 정의된 이항 연산(binary operation)으로 이루어진 대수 구조를 군이라고 합니다.군을 만족하기 위해서는 집합의 모든 원소가 다음 조건을 만족해야 합니다. * 대수 구조(Algebraic Structure)란, 집합과 그 위에 정의된 연산들이 특정 규칙(공리)을 만족하는 수학적 구조를 의미함. 군의 조건1. Closure 닫힘a, b ∈ G, then a · b ∈ Ga와 b가 집합에 속하면, a와 b를 연산한 결과도 그 집합에 속해야 합니다. 2. Associative 결합법칙a, b, c ∈ G,then (a·b)·c = a·(b·c)a와 b를 연산하고 c를 연산한 결과가, b와 c를 연산하고 a를 연산한 결과와 같아야합니..

확장 유클리드 알고리즘이란?두 수의 최대공약수를 구하는 과정에서 , 베주 항등식(Bézout's Identity) 계수인 x와 y를 찾는 알고리즘입니다. 즉, 기본 유클리드 알고리즘에서 나머지 연산을 반복하면서, 동시에 계수 x와 y를 추적하여 베주 항등식을 만족하는 값을 찾고,이를 모듈로 역원을 구하는 데 사용합니다. 베주 항등식두 정수와 그 최대공약수 사이의 관계를 보여주는 항등식입니다.GCD(a,b) = ax + by = d위 방정식은 다음과 같은 의미를 가집니다.적어도 둘 중 하나는 0이 아닌 정수 a,b가 있고 그 최대공약수를 d라 합니다. 이때 다음 세 명제가 성립합니다.1. d = ax + by를 만족하는 정수 x,y가 반드시 존재한다.2. d는 정수 x,y에 대하여 ax+by 형태로 표현..
설명유클리드 알고리즘은 두 정수 사이의 최대공약수를 구하는 방식이다. 두 정수 사이의 아래와 같은 특성을 이용한다.큰 수(a)와 작은 수(b) 사이의 최대 공약수 = 큰 수를 작은 수로 나눈 나머지(a mod b)와 작은 수(b) 사이의 최대 공약수 a,b의 최대공약수를 구하기 위해 GCD(a,b)를 반복적으로 사용하는데, 만약 b가 0이라면, a값을 리턴하고b가 0이 아니라면, Euclid(b, a mod b) 를 재귀호출 (또는 while loop 사용) 한다. 앞의 파라미터를 계속 뒤의 파라미터로 나눈 나머지로 줄게 만들면서,어느 순간 뒤 파라미터가 0 (나머지가 0)이 될 때 그 앞 파라미터가 두 수의 최대공약수이다. 3개 정수의 최대공약수를 구할 때는, 두 개씩 먼저 적용하면 된다.gcd(a,..
OpenMP ( Open Multi-Processing )란?다중코어 환경에서 병렬 프로그래밍을 지원하는 API입니다. macOS에 OpenMP를 설치하기 위해 먼저 homebrew를 설치해야합니다.*Homebrew는 macOS와 Linux에서 사용할 수 있는 패키지 관리 시스템입니다. 터미널에서 Homebrew 명령어를 통해 여러 가지 소프트웨어를 설치하고 관리할 수 있게 합니다. homebrew 설치 확인 명령어brew --version Homebrew 설치 명령어 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" OpenMP library 설치 명령어brew install l..
AES란? Advanced Encryption Standard (AES)DES의 대체 암호화 방식의 필요성이 대두되고, US NIST 공모로 1997년에 정해진 새로운 블록 암호화 방식 data는 128 bit,key는 128 / 192 bit / 256 bit를 사용입출력 데이터를 모두 128비트 (16바이트)의 블록으로 처리 Iterative AES DES는 Feistel cipher* Feistel 암호는 데이터를 왼쪽과 오른쪽으로 나눈 후, 반복적으로 교환하면서 변환을 수행하는 구조 * 하지만 AES는 Feistel 구조를 사용하지 않고, 모든 라운드에서 전체 데이터 블록을 사용하는 반복적 구조(iterative cipher)* 라운드(round) - 데이터를 점점 복잡하게 변환하는 반복적인 처리..
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 최단 거리를 구하는 문제.가까운 노드부터 탐색하도록 그래프 탐색법 중 BFS를 이용했다.공식 쓰듯이 사용했더니, 이용하지 않으면 시간이 지나고 까먹곤 해서.. 기초부터 다시 보았고, 한 티스토리의 기본 코드를 참고했다.나중에 다시 BFS와 DFS를 정리해서 포스팅하겠다. 풀이 1. 시작점은 0,0 노드이다.2. 노드에서 이동 가능한 dx, dy를 리스트로 정의한다.이는 순서대로 left..

풀이 논리 1. 레이저는 두 괄호가 붙어서 등장한다. 따라서 "(" ")" 가 연속으로 인식되면 이를 레이저로 처리할 수 있다.2. 레이저는 지금까지 등장한 막대기를 잘라낸다. 따라서 등장한 막대기의 개수만큼 누적값을 증가시킬 수 있다.3. 막대기의 종료점이 등장하는 경우, 해당 막대기가 잘려나가는 효과와 동일하므로 누적값을 +1 증가시킬 수 있다.4. 막대기가 등장해서, 종료되기 전까지 이 열린 괄호를 스택에 관리한다. 정답 코드input = input()stack = [] answer = 0temp = ''for i in input: if i == '(': stack.append("(") elif i == ')' : stack.pop() if tem..